bash - 如何使用 sed 替换文件中第三次出现的同一正则表达式?

标签 bash sed

我在寻找一个 sed 脚本时遇到问题,该脚本在正则表达式看起来完全相同但我只想替换一个时有效。

文件看起来像这样:

something someting something
this 
something someting something
something someting something
this 
someting something
someting something
someting something
this
someting something
someting something
this

我想将第三个“this”替换为其他内容。我试过:

sed '3,/this.*/s/this.*/something/'

和各种类似的尝试,但它不起作用。

最佳答案

这在 sed 中并不容易,但 awk 可以做到

awk '/this/{count++;if(count==3){sub("this","something")}}1'

关于bash - 如何使用 sed 替换文件中第三次出现的同一正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8330200/

相关文章:

sed - 如何在 sed 中转义字符串变量?

python - 如何在 python 中将文本文件转换为 CSV

bash - 从列表中查找最旧的文件

linux - 在许多文件中用多行替换字符串

bash - 如何删除 ~/Downloads 中过去 30 天内未触及、添加或打开的所有文件?

regex - sed 尝试在搜索和替换中使用捕获组时前面的正则表达式无效

perl - 如何使用 unix 命令将字符串拆分为具有特定宽度的行?当输入字符串是无限的?

bash - 防止 sed 创建临时文件

linux - 在后台运行 iperf 并将输出重定向到文件

bash - 使用 bash、sed、awk 解析 .ini 等文件