什么 sed 命令允许我在每一行的末尾附加一个字符串,在第一行的开头附加一个不同的字符串,在第五行的末尾附加一个不同的字符串?
到目前为止我有
sed 's/$/<br>/' $FILE1 >> $FILE1_GETS_APPENDED_TO_THIS_FILE
将 html break 语句附加到 file1 中每一行的末尾。不过,我需要在前 5 行周围添加一个标题语句。因此,第一行的开头需要<h3>
附加到它,第五行的结尾需要附加到</h3>
它。
谢谢!
就这么简单:
sed 's/$/<br>/; 1 s/^/<h3>/; 5 s/$/<\/h3>/'
当您使用$
匹配行尾时,使用^
匹配行首。
然后,对于您的每个命令(例如s
),您可以指定它应该应用的行号(或范围)。
在 sed 命令之前添加一个数字以将其仅应用于该行。添加以逗号分隔的两个数字以指定行号范围。$
代表最后一行。有关更多信息,请参阅 sed 手册中的“地址”。
sed -e '1 s/^/<h3>/' -e '5 s/$/<\/h3>/' -e '6,$ s/$/<br>/'
我喜欢 awk 的这种东西:
awk 'NR==1{print "<h3>"};{print $0, "<br>"};NR==5{print "</h3>"}' file.htm
查看sed
手册中的“地址”。您可以指定应应用命令的行号:
sed '5s/$/Appended after fifth line/'