sed:每N行后插入一个字符串

use*_*923 24 sed

我想在我的大文件中每隔30行插入一个字符串.我正在使用mini-sed,它不支持〜(代字号)范围运算符.我正在寻找仅限sed的解决方案.

Mig*_*uel 45

这个线程是另一个如何使事情复杂化的例子.这应该这样做:

sed '0~30 s/$/string/g' < inputfile > outputfile
Run Code Online (Sandbox Code Playgroud)

每行30行"字符串"插入行的末尾.如果你想要一个带有"string"字样的新行,只需使用"\n string".

  • 虽然这是我想要的,但提问者特意要求不使用波浪号的解决方案. (12认同)

gle*_*man 6

这每3行插入一行;

seq 1 10 | sed ': loop; n; n; a insert
n; b loop'
Run Code Online (Sandbox Code Playgroud)

生产

1
2
3
insert
4
5
6
insert
7
8
9
insert
10
Run Code Online (Sandbox Code Playgroud)

相应地调整n;命令前的a命令数


Anu*_*mar 6

sed '1~30 i everyThirtyLine' file.dat
Run Code Online (Sandbox Code Playgroud)

这在 Cygwin 中进行了测试。


Bet*_*eta 2

sed 'n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;s/$/\ 
string/' filename
Run Code Online (Sandbox Code Playgroud)

  • @user868923,简短的回答:不,那时你确实使用了错误的工具。你*可以*使用 sed 来*构造*n 的字符串,然后运行它,但这将是一个 sed 命令,如此神秘,以至于它实际上只对给其他向导留下深刻印象有好处。唔... (2认同)