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

时间:2016-08-05 10:41:35

标签: 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" 

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

谢谢和问候!

1 个答案:

答案 0 :(得分:0)

这应该有效:

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
相关问题