有没有办法用sed替换文件中第n个字符串?
如何更改它以取代第n次出现?
我的文件内容如下:
first line
second line
third line
jack
fifth line
jack
seventh line
考虑变量var = jill
。
我想用变量$var
的值替换第二次出现的jack。
答案 0 :(得分:1)
这可能适合你(GNU sed):
sed ':a;$!{N;ba};s/jack/'"$var"'/2' file
这会将文件存入内存,然后将jack
的第二次出现替换为$var
。
答案 1 :(得分:0)
如果您想使用awk
awk
版本
awk -v c="$var" '/jack/ && ++a==2 {sub(/jack/,c)}1' file
first line
second line
third line
jack
fifth line
jill
seventh line