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

标签 linux bash perl server newline

我尝试让 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/

相关文章:

linux - 为什么在存在目标的情况下,bash 中的否定文件存在检查会返回奇怪的结果?

linux - 包含日志文件的 logrotate 目录

java - 当 GWT web 应用程序在 linux 服务器上运行时,出现这样的错误

bash - 计算文本文件中单词列表的出现次数

perl - 尝试在 Perl 中使用 splice 删除特定列

html - 我如何从 Perl 中的 HTML 表格中提取数据?

perl - 如何观察特定的哈希键来改变它的值?

c++ - getline(param1,param2,param3) 在 C++、linux 中的用法

linux - 从哪里开始学习如何基于脚本构建 Linux GUI 应用程序?

linux - 在模式前的文件名中添加字符串