Python相当于perl -pe?

Nag*_*gel 13 python bash pipe

我需要从一些文本文件中选择一些数字.我可以用grep挑选出我需要的行,但不知道如何从行中提取数字.一位同事告诉我如何使用perl从bash执行此操作:

cat results.txt | perl -pe 's/.+(\d\.\d+)\.\n/\1 /'
Run Code Online (Sandbox Code Playgroud)

但是,我通常使用Python编写代码,而不是Perl代码.所以我的问题是,我可以用同样的方式使用Python吗?也就是说,我可以将bash中的内容传递给Python,然后将结果直接输入到stdout吗?......如果这是有道理的.或者Perl在这种情况下更方便吗?

Amb*_*ber 11

是的,您可以从命令行使用Python.python -c <stuff><stuff>作为Python代码运行.例:

python -c "import sys; print sys.path"
Run Code Online (Sandbox Code Playgroud)

没有直接等同-p于Perl 的选项(自动输入/输出逐行处理),但这主要是因为Python不使用与$_Perl 相同的概念- 在Python中,所有输入并输出手动完成(通过raw_input()/ input(),和print/ print()).


对于您的特定示例:

cat results.txt | python -c "import re, sys; print ''.join(re.sub(r'.+(\d\.\d+)\.\n', r'\1 ', line) for line in sys.stdin)"
Run Code Online (Sandbox Code Playgroud)

(显然有点笨拙.在实际的Python中编写脚本可能会更好.)