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

Posted

技术标签:

【中文标题】用多个新字符串替换文件中特定位置的单个字符串【英文标题】:Replace a single string in file at specific position with multiple new strings 【发布时间】:2016-12-11 18:03:33 【问题描述】:

我想用一些新字符串替换文件中特定位置的单个字符串。假设我想在一个看起来像这样的文件中搜索“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】:

这应该可行:

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

【讨论】:

谢谢!但是有没有办法简化这一步?也许有范围顺序序列? 也许 OPS 需要 -i 标志。

以上是关于用多个新字符串替换文件中特定位置的单个字符串的主要内容,如果未能解决你的问题,请参考以下文章

电脑系统批处理,如何将多个tab替换为一个tab,而单个的tab不变化?

查找字符串中特定字符最后出现的位置

怎么用C语言对文件操作用特定内容替换其中某些内容

08:字符替换

1.7.08:字符替换

被阴2号