所以,我有一个名为“burpfile”的文件。我想在每两行之后添加一个特定的行“peter”。一个示例 burpfil 可以包含:
line1
line2
line3
line4
line5
Run Code Online (Sandbox Code Playgroud)
我希望 bashscript 将其修改为:
line1
peter
line2
peter
line3
peter
line4
peter
line5
peter
Run Code Online (Sandbox Code Playgroud)
为了实现这一点,我尝试了 sed,因为这是这篇文章中的选择:https : //stackoverflow.com/a/45964337/11155582
这是我到目前为止所得到的。但是,由于我不理解 sed,脚本仅在文件末尾插入“peter”。我不知道为什么。
nr=$(wc -l burpfil | awk '{print $1}')
for i in $(seq 0 2 $nr)
do
sed -e '$i peter' -i burpfil
done
Run Code Online (Sandbox Code Playgroud)
正如代码片段中所见,该命令与我链接到的线程中的内容不同。那是因为在命令中有一个变量不起作用......而且我不知道如何解决它。
在每行之前添加:
$ echo "line1
line2
line3
line4
line5" | sed 's/^/peter\n/'
peter
line1
peter
line2
peter
line3
peter
line4
peter
line5
Run Code Online (Sandbox Code Playgroud)
sed 脚本相当简单。这是一个替换命令s/regex/replacement/。在这种情况下,正则表达式只是^,意思是“行的开头”。替换为peterplus \n,这是一个换行符特殊字符。所以它是这样写的:
在每一行之前,插入“peter”加上一个换行符
在每一行后添加:
$ echo "line1
line2
line3
line4
line5" | sed 's/$/\npeter/'
line1
peter
line2
peter
line3
peter
line4
peter
line5
peter
Run Code Online (Sandbox Code Playgroud)
在这里,脚本是相似的,除了正则表达式是$,这意味着“行尾”,并且换行符被替换为之前peter而不是之后。它是这样写的:
在每一行之后,添加一个换行符和单词“peter”