【问题标题】:Perl script to add newline to end of textfilePerl脚本将换行符添加到文本文件的末尾
【发布时间】:2016-03-23 18:04:15
【问题描述】:

我试图让一个 perl 脚本在文本文件的末尾添加一个换行符,然后写入以下内容:

/bin/假

文件如下所示:

/bin/sh
/bin/破折号
/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

但没有任何运气。它不接受换行符,只返回语法错误。你能帮忙吗!?

【问题讨论】:

  • echo /bin/false >> /etc/shells
  • 哇哦..这么简单!?请把它作为一个答案,然后我会批准它:)
  • 温馨提醒mark answers accordingly ...

标签: linux bash perl server newline


【解决方案1】:

这个:

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!

但无论如何,这似乎是矫枉过正。您可以使用您的外壳功能 通过附加>> 来回显一行并重定向到一个文件:

echo /bin/false >> /etc/shells

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多