我有多个文本文件,我试图将段落标签
添加到文件中每一行的开头和结尾,同时跳过第一行和空行。 >
到目前为止,我想出了以下代码,但它并没有跳过空行,而是在新行中添加了下面的
。
for i in *.txt; do sed -i -e '1 ! s/.*/<p>&<\/p>/' $i; done
例如,假设文本文件如下所示:
This Is the File Name
Paragraph 1
Paragraph 2
Paragraph 3
Paragraph 4
这是我通过代码获得的输出
This Is the File Name
<p>
</p>
<p>Paragraph 1
</p>
<p>
</p>
<p>Paragraph 2
</p>
<p>
</p>
<p>Paragraph 3
</p>
<p>
</p>
<p>Paragraph 4</p>
我想得到的是这样的:
This Is the File Name
<p>Paragraph 1</p>
<p>Paragraph 2</p>
<p>Paragraph 3</p>
<p>Paragraph 4</p>
答案 0 :(得分:1)
发生这种情况是因为.*
匹配空字符串。只需使用..*
使其至少需要一个字符即可:
$ sed -i -e '1 ! s|..*|<p>&</p>|' file.txt
$ cat file.txt
This Is the File Name
<p>Paragraph 1</p>
<p>Paragraph 2</p>
<p>Paragraph 3</p>
<p>Paragraph 4</p>
答案 1 :(得分:0)
使用awk:
awk '$1 !~ /^$/ {print "<p>" $0 "</p>"} $1 ~ /^$/ { print ""}' file