使用linux的sed命令是否可以执行sed命令来搜索文件中的子字符串,然后仅修改该行中的子字符串并将文件中的行保留在一行中?
示例文件test.txt
foo bar
goo bar
我尝试了以下操作,但它只保存受影响的行而不是整个文件。
sed -in '/foo/{s/bar/bah/;p}' test.txt
是否可以用一个 sed 命令来完成此操作?
这是
awk
的任务,因为它更干净且更易于维护:
awk '$1=="foo"{sub("bar", "bah", $2)} 1' file
要编辑就地,您可以使用
sponge
:
awk ...... file | sponge file