我尝试让 perl 脚本在文本文件末尾添加换行符,然后写入以下内容:
/bin/假
该文件如下所示:
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/tmux
/usr/bin/screen
我尝试运行以下脚本:
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
确实有语法错误。从你使用 double 开始
路径上的栏,您应该在其中转义它们(\/
),并且
中间有奇怪的换行符。您还可以使用其他
分隔符而不是正斜杠,以避免必须全部转义。
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
关于linux - Perl 脚本将换行符添加到文本文件末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36185528/