0

ファイルがあり、その一部を以下に示します。

OUTPUT_FILENAME="out.Received.Power.x.0.y.1.z.0.41
X_TX=0
Y_TX=1
Z_TX=0.41

その一部を BASH で自動的に変更したいと思います。OUTPUT_FILENAME が表示されるたびに、その横の名前を上書きして新しい名前に変更したいと考えています。次に、値 X_TX、Y_TX、および Z_TX で同じことを行いたい: その隣の値を削除し、新しい値を書き直します。たとえば、X_TX=0 の代わりに、X_TX=0.3 またはその逆が必要です。可能だと思いますか?多分grepかそこらで..

4

2 に答える 2

0

次のように sed を使用できます。

つまり、X_TX= を X_TX=123 に置き換えるには、次のようにします。

sed -i -e 's/X_TX=.*/X_TX=123/g' /tmp/file1.txt
于 2013-05-21T20:04:02.990 に答える
0

を使用した 1 つのオプションawk。値は変数としてawkスクリプトに渡され、一致する場合は置換されます。

awk -v outfile="str_outfile" -v x_tx="str_x" -v y_tx="str_y" -v z_tx="str_z" '
    BEGIN { FS = OFS = "=" }
    $1 == "OUTPUT_FILENAME" { $2 = outfile; print; next }
    $1 == "X_TX" { $2 = x_tx; print $0; next }
    $1 == "Y_TX" { $2 = y_tx; print $0; next }
    $1 == "Z_TX" { $2 = z_tx; print $0; next }
' infile
于 2013-05-21T20:41:27.400 に答える