我需要从一些文本文件中选出一些数字.我可以用grep选出我需要的行,但不知道如何从行中提取数字.一位同事向我展示了如何用perl的bash来做到这一点:
cat results.txt | perl -pe 's/.+(\d\.\d+)\.\n/\1 /'
但是,我通常用Python编写代码,而不是Perl.所以我的问题是,我可以用同样的方式使用Python吗?也就是说,我可以把一些东西从bash转到Python,然后直接得到stdout的结果?如果这是有道理的.或者Perl在这种情况下更方便?
解决方法
是的,你可以从命令行使用Python. python -c< stuff>将运行< stuff>作为Python代码.例:
python -c "import sys; print sys.path"
没有直接相当于Perl的-p选项(自动输入/输出逐行处理),但这主要是因为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)"
(显然有些更笨拙,可能最好只是写脚本来在实际的Python中进行.)