用多个新字符串替换文件中特定位置的单个字符串
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 标志。以上是关于用多个新字符串替换文件中特定位置的单个字符串的主要内容,如果未能解决你的问题,请参考以下文章