Perl如何将文本添加到特定的第二行文件?

时间:2014-07-25 16:17:26

标签: perl

尝试在perl中执行此类操作:

sed '1 a<!-- $Header: $\n Purpose: system generated file -->' -i test.xml 

将标题块和目的添加到xml,shell脚本等文件中的第2行...

不想这样做:

`sed '1 a<!-- \$Header: \$\n Purpose: system generated file -->' -i test.xml`  

但是如果绝对必要的话,要认识到它是一种选择。

2 个答案:

答案 0 :(得分:3)

如果您只传递一个文件,则可以使用以下内容:

perl -i -pe'
   $_ .= "<!-- \$Header: \$\n Purpose: system generated file -->\n" if $. == 1;
' test.xml

如果您可能传递多个文件,则需要添加一行,以便在每个文件的末尾重置$.

perl -i -pe'
   $_ .= "<!-- \$Header: \$\n Purpose: system generated file -->\n" if $. == 1;
   close(ARGV) if eof;
' test*.xml

(注意:eof()表示的不同于eof。这有多糟糕!)

为了便于阅读,我添加了换行符。命令将按原样运行,但如果您愿意,可以删除换行符。

答案 1 :(得分:0)

尝试这种方式:

perl -ple '++$i == 2 and $_ = "changed" # change $_ as you want' in.txt > out.txt