使用 sed 命令将特定行上的字符串更改为特定字符串

使用 sed 命令将特定行上的字符串更改为特定字符串

如果文件包含名为“test”的字符串,我需要使用 sed 仅在第四行更改文件中的字符串

所以基本上我现在得到的是:

sed '/test/ s/abc/zz/g' sample

这基本上会浏览各行,看看它是否有测试,然后将 abc 更改为 zz(如果它在该行中)。

但我该如何只针对第四行呢?

我试过

 sed '/test/ 4s/abc/zz/g' sample

在 s 前面添加 4 ,但不起作用。

答案1

单程:

sed -e '4 {
  /test/s/abc/zz/g
}' <file

答案2

我不确定,但是这样的东西会起作用吗?

awk 'NR==4 {print $0}' filename.txt | grep 'test' | sed 's/abc/xyz/g'

答案3

其他方式:

首先找到包含该字符串“test”的行:

LINE=$(grep "测试" 文件 -n | awk '{print $1}' | cut -d ':' -f1 | xargs)

然后使用该变量 LINE 执行以下操作:

sed "s$LINEs/abc/zzz/g" 文件

答案4

你可以用这个

sed -i '4s/old_text/new_text/g' file_name

相关内容