我有一个文件,其中一部分如下所示:
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左右......
答案 0 :(得分:0)
您可以像这样使用sed:
即。要用X_TX = 123替换X_TX =,你可以这样做:
sed -i -e 's/X_TX=.*/X_TX=123/g' /tmp/file1.txt
答案 1 :(得分: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