【发布时间】:2017-11-17 18:52:25
【问题描述】:
perl 有方便的命令行语法来替换文件
perl -pe 's/key/replace/g' file
我想知道字符串替换的单行语法是什么?
perl -pe 's/key/replace/g' string
不起作用。它会抱怨
无法打开 ppp:没有这样的文件或目录。
【问题讨论】:
标签: perl
perl 有方便的命令行语法来替换文件
perl -pe 's/key/replace/g' file
我想知道字符串替换的单行语法是什么?
perl -pe 's/key/replace/g' string
不起作用。它会抱怨
无法打开 ppp:没有这样的文件或目录。
【问题讨论】:
标签: perl
您可以使用echo(或您的操作系统的等效项)将您的字符串发送到您的命令行 Perl 程序中。
$ echo hello | perl -pe 's/hello/goodbye/'
goodbye
【讨论】:
perl -pe 's/key/replace/g' <<< 'string'
您可能想要删除 -p 选项,因为它会将您的代码包装在 while(<>) 循环中。对于 perl <> 意味着读取命令行或 STDIN 指定的文件(如果没有的话)。所以你的“字符串”(当你尝试它时我猜是“ppp”)被视为文件名。
如果你想传入非文件名,你可能想要这样的东西:
perl -e 'print join(" ",map{ s/key/replace/g; $_ } @ARGV),"\n"' string
【讨论】:
-p 并稍微滥用while 循环会使代码变得简单得多:-)
-p 的作用以及为什么 OP 代码永远不会按原样工作会很有用。