[英]Perl script to add newline to end of textfile
我试图让 perl 脚本在文本文件的末尾添加一个换行符,然后写入以下内容:
/斌/假
该文件如下所示:
/bin/sh
/bin/破折号
/bin/bash
/bin/rbash
/usr/bin/tmux
/usr/bin/屏幕
我尝试运行以下脚本:
perl -pi -e 's///usr//bin//screen//usr//bin//screen"\\n"//bin//false/g' /etc/shells
但没有任何运气。 它不接受换行符,只返回语法错误。 你能帮我吗!?
这个:
s///usr//bin//screen///usr//bin//screen"\n"//bin//false/g
确实有语法错误。 从你在路径上使用双杠开始,你应该在那里转义它们( \\/
),还有它中间的奇怪的换行符。 您还可以使用其他分隔符而不是正斜杠,以避免必须全部转义。
s!/usr/bin/screen\n!/usr/bin/screen\n/bin/false!
另外,不要忘记关闭最后一行。 您还可以使用\\K
(有关详细信息,请参阅perldoc perlre
)来简化您的正则表达式,最终结果为:
s!/usr/bin/screen\n\K!/bin/false\n!
但无论如何,这似乎有些矫枉过正。 您可以使用 shell 功能通过附加>>
来回显一行并重定向到文件:
echo /bin/false >> /etc/shells
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.