$ cat file
cat cat
dog cat
dog puppy
dog cat
使用sed:
$ sed 's/dog/big_dog/' my_file > new_file
$ cat new_file
cat cat
big_dog cat
big_dog puppy
big_dog cat
我的目标是只将第二个dog
替换为big_dog
,但这并没有发生:
$ sed 's/dog/big_dog/2' my_file > new_file
cat
dog cat
dog puppy
dog cat
如何仅替换第二次出现的情况,即:
cat
dog cat
big_dog puppy
dog cat
4条答案
按热度按时间ru9i0ody1#
就像在注解中讨论的那样,这个替换了第二行的match:
要将第二个匹配替换为sed,请用途:
pokxtpni2#
sed
替换第二次出现是:说明:
请注意,在找到第二次出现之后,需要最后3个命令来打印文件的其余部分,否则可能会对搜索到的图案的每个偶数出现重复替换。
3ks5zfa03#
下面的
awk
也可以帮助你。如果将输出保存到Input_file本身,则在上面的代码中添加
> temp_file && mv temp_file Input_file
。说明:
w9apscun4#
使用下面的命令将第二行中的单词dog替换为big_dog。
同样如果你想从第二个替换到第三个,那么你可以使用下面的命令:-