如何使用sed替换文件中第n个字符串的出现次数

时间:2014-11-05 09:04:39

标签: sed

有没有办法用sed替换文件中第n个字符串?

如何更改它以取代第n次出现?

我的文件内容如下:

first line 
second line 
third line
 jack
fifth line 
jack
 seventh line

考虑变量var = jill

我想用变量$var的值替换第二次出现的jack。

2 个答案:

答案 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