有没有类似于 python "perl -pe"选项?



TL;DR 我想知道 Python 中的选项是什么,它可能大致对应于 Perl 中的 "-pe" 选项。

我曾经使用PERL有一段时间了,但是现在,我已经切换到PYTHON,因为它的简单性和简单性。 当我需要在 shell 提示符上进行简单的文本处理时,我使用了 perl -pe 选项。下面是一个示例。

grep foo *.txt | perl -pe 's/foo/bar/g'

要在 Python 中做类似的事情,有人可以向我解释我如何做到这一点吗?

-pe是两个参数的组合,-p-e-e选项大致相当于 Python 的 -c 选项,后者允许您指定要在命令行上运行的代码。 没有 Python 等价物 -p ,它有效地添加代码以在从标准输入读取的循环中运行传递的代码。 要获得这一点,您实际上必须在代码中编写相应的循环,以及从标准输入读取的代码。

Perl虽然是一种成熟的编程语言,但最初被认为是一种文本操作工具,并演变为一种工具。

另一方面,Python一直是一种通用编程语言。它可以处理文本和文本的灵活性,与Java或C++相比具有极大的灵活性,但它将在其通用语法中这样做,没有例外的规则,包括正则表达式的特殊语法,在没有其他指令的情况下,这些规则本身就成为一个程序。打开、读取和写入文件也是如此,给定它们的名称。

所以,你可以用"python -c ..."从命令行运行 Python 脚本 - 但您的命令必须是一个完整的程序 - 带有开头、中间和结尾。

因此,对于在 stdin(标准)中传递的几个文件中的简单正则表达式替换,您可以尝试一些方法:

grep foo *txt| python3 -c "import sys, re, os; [(open(filename + 'new', 'wt').write(re.sub ('foo', 'bar', open(filename).read())), os.rename(filename + "new", filename))for filename in sys.stdin]"

最新更新