尝试在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`
但是如果绝对必要的话,要认识到它是一种选择。
答案 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