linux - 用多个新字符串替换文件中特定位置的单个字符串

标签 linux shell unix sed scripting

我想用一些新字符串替换文件中特定位置的单个字符串。假设我想在如下所示的文件中搜索“BAD”:

MAD
DAD
BAD
DAB
BED

所以现在我想用以下内容替换位置 3 的 BAD:

BAD-1
BAD-2
BAD-3

生成的文件应该如下所示:

MAD
DAD
BAD-1
BAD-2
BAD-3
DAB
BED

我用 sed 做了一些尝试:

sed "s/old/new/g" 

但这只会改变一行。 有任何想法吗?

谢谢和问候!

最佳答案

这应该有效:

sed 's/^BAD$/BAD-1\nBAD-2\nBAD-3/' file

MAD
DAD
BAD-1
BAD-2
BAD-3
DAB
BED

使用 awk 进行范围控制:

awk -v n=3 '/^BAD$/{for(i=1; i<=n; i++) print "BAD-" i; next} 1' file

关于linux - 用多个新字符串替换文件中特定位置的单个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38787256/

相关文章:

linux - 如何正确运行 Perl "one liner"命令行脚本?

bash - 在脚本文件中运行定义的函数时找不到命令

bash - shell脚本中的嵌套命令和管道命令

linux - 抑制单个 sudo 命令的日志条目

unix - setuid的用法?

linux - 如何从本地计算机 [windows 7] 运行和恢复远程计算机 [linux] 中的 Eclipse

android - 在 PXA270 设备上移植 Android 操作系统

linux - Skype4py:错误:Skype 附加超时 Ubuntu 14.04

bash - bash变量扩展中出现奇怪的字符

c - Linux/将目录作为文件打开