【发布时间】:2016-12-30 16:38:21
【问题描述】:
在 linux Vm 中,我正在尝试更改 50 多个文件的第二行。
我在下面成功地使用了这个命令来处理没有符号的字符串。
perl -p -i -e 's/.*/new_line / if $.==2' .
但是现在我正在尝试使用此命令添加新字符串“# $new_line $”:
perl -p -i -e 's/.*/# $Header$ / if $.==2' .
但出现以下错误:
Final $ should be \$ or $name at -e line 1, within string
syntax error at -e line 1, near "s/.*/# $Header$ /"
Execution of -e aborted due to compilation errors.
感谢任何帮助。提前谢谢你。
【问题讨论】:
-
使用:
perl -pie 's/.*/# \$Header\$/ if $.==2' -
感谢 Bunch Anuchava,它成功了! :) perl -pie 's/.*/# \$Header\$ / if $.==2' .
-
@anubhava 的示例非常有效,只是它将两行替换为一行,因为
s///不会替换字符串末尾的“\n”。 -
@AndyLester
.*不匹配换行符 -
@anubhava:
-pie不会做你想做的事。 Perl 使用-ie表示您要就地替换,并将e添加到每个备份文件名的末尾。你必须做perl -pi -e或perl -p -i -e。
标签: linux bash perl symbols substitution