将换行符添加到文本文件末尾的 Perl 脚本
Perl script to add newline to end of textfile
我尝试制作一个 perl 脚本,在文本文件的末尾添加一个换行符,然后写入以下内容:
/bin/false
文件如下所示:
/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
但没有任何运气。它不接受换行符,只是 returns 语法错误。你能帮忙吗!?
这个:
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
我尝试制作一个 perl 脚本,在文本文件的末尾添加一个换行符,然后写入以下内容:
/bin/false
文件如下所示:
/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
但没有任何运气。它不接受换行符,只是 returns 语法错误。你能帮忙吗!?
这个:
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