繁体   English   中英

将换行符添加到文本文件末尾的 Perl 脚本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM