如果文件包含名为“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