指定要处理的文件到 Perl 单行
Posted
技术标签:
【中文标题】指定要处理的文件到 Perl 单行【英文标题】:Specifying file to process to Perl one-liner 【发布时间】:2017-06-04 05:12:27 【问题描述】:给了我一个 Perl 单行代码。它具有以下形式:
perl -pe'...'
如何指定要处理的文件给程序?
【问题讨论】:
我厌倦了将答案粘贴到使用 Perl 单行解决方案回答的每个问题中。 【参考方案1】:有关如何启动 perl
的文档可在 perlrun 手册页中找到。
perl -pe'...' -i~ file [file [...]] # Modifies named file(s) in place with backup.
perl -pe'...' -i file [file [...]] # Modifies named file(s) in place without backup.
perl -pe'...' file.in >file.out # Reads from named file(s), outputs to STDOUT.
perl -pe'...' <file.in >file.out # Reads from STDIN, outputs to STDOUT.
如果文件名可以以-
开头,您可以使用--
。
perl -pe'...' [-i[~]] -- "$file" [...]
如果您想修改多个文件,您可以使用以下任何一种:
find ... -exec perl -pe'...' -i~ + # GNU find required
find ... | xargs -r perl -pe'...' -i~ # Doesn't support newlines in names
find ... -print0 | xargs -r0 perl -pe'...' -i~
在上述所有内容中,方括号 ([]
) 表示可选内容。它们不应出现在实际命令中。另一方面,-exec
子句中的 应该按原样显示。
注意:一些单行代码使用-n
和显式打印而不是-p
。以上所有内容也适用于这些。
【讨论】:
这非常有用。能否在 find 命令的 -exec 选项中添加 perl 的使用方法。 @stack0114106,它已经在那里了。这是第一个。 谢谢.. 我认为这需要一个 for 循环。 @stack0114106,Perl 的-n
/-p
将愉快地依次读取命令行提供的每个文件。所有三个版本都可以将多个文件传递给perl
的单个调用。使用-exec perl ... \;
(GNU find
或其他)每次调用perl
只获取一个文件(例如,如果您想在END
中对每个文件执行某些操作。)以上是关于指定要处理的文件到 Perl 单行的主要内容,如果未能解决你的问题,请参考以下文章