2

什么 sed 命令允许我在每一行的末尾附加一个字符串,在第一行的开头附加一个不同的字符串,在第五行的末尾附加一个不同的字符串?

到目前为止我有

    sed 's/$/<br>/' $FILE1 >> $FILE1_GETS_APPENDED_TO_THIS_FILE

将 html break 语句附加到 file1 中每一行的末尾。不过,我需要在前 5 行周围添加一个标题语句。因此,第一行的开头需要<h3>附加到它,第五行的结尾需要附加到</h3>它。

谢谢!

4

4 回答 4

3

就这么简单:

sed 's/$/<br>/; 1 s/^/<h3>/; 5 s/$/<\/h3>/'

当您使用$匹配行尾时,使用^匹配行首。

然后,对于您的每个命令(例如s),您可以指定它应该应用的行号(或范围)。

于 2012-09-07T12:41:32.840 回答
2

在 sed 命令之前添加一个数字以将其仅应用于该行。添加以逗号分隔的两个数字以指定行号范围。$代表最后一行。有关更多信息,请参阅 sed 手册中的“地址”。

sed -e '1 s/^/<h3>/' -e '5 s/$/<\/h3>/' -e '6,$ s/$/<br>/'
于 2012-09-07T12:41:28.637 回答
1

我喜欢 awk 的这种东西:

awk 'NR==1{print "<h3>"};{print $0, "<br>"};NR==5{print "</h3>"}' file.htm
于 2012-09-07T12:45:10.323 回答
0

查看sed手册中的“地址”。您可以指定应应用命令的行号:

sed '5s/$/Appended after fifth line/'
于 2012-09-07T12:41:25.947 回答