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.3 而不是 X_TX=0,反之亦然。你认为这可能吗?也许用 grep 左右..

4

2 回答 2

0

一种使用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 回答
0

您可以像这样使用 sed:

即用 X_TX=123 替换 X_TX= 你可以这样做:

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