linux - sed 命令搜索文件中的子字符串,然后仅修改该行中的子字符串并将这些行保留在文件中

问题描述 投票:0回答:1

使用linux的sed命令是否可以执行sed命令来搜索文件中的子字符串,然后仅修改该行中的子字符串并将文件中的行保留在一行中?

示例文件test.txt

foo bar
goo bar

我尝试了以下操作,但它只保存受影响的行而不是整个文件。

sed -in '/foo/{s/bar/bah/;p}' test.txt

是否可以用一个 sed 命令来完成此操作?

linux bash sed
1个回答
0
投票

这是

awk
的任务,因为它更干净且更易于维护:

awk '$1=="foo"{sub("bar", "bah", $2)} 1' file 

要编辑就地,您可以使用

sponge

awk ...... file | sponge file
© www.soinside.com 2019 - 2024. All rights reserved.