我试图使用Python多一点,我知道这不是最好的用例,但它困扰着我为什么我不能得到它的工作。Python搜索字符串一个线程
我目前正在使用Python 2.7.6,我想捕捉一个文件,然后根据正则表达式从中抽出特定的字符串。下面的代码适用于我想要的,但仅查看第一行。
cat /tmp/blah.txt | python -c "import re,sys; m = re.search('Host: (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*OS:(.*) Seq:', sys.stdin.read()); print m.group(1), m.group(2)"
所以,我认为我可以只使用一个for循环或到的FileInput读取整个文件,然后把我的代码的其余部分在那里,但我不断收到错误在for循环。
cat /tmp/blah.txt | python -c "import sys; for line in sys.stdin: print line" File "<string>", line 1
import sys; for line in sys.stdin: print line
^
SyntaxError: invalid syntax
我已经尝试了一些这种变化,但不能得到它的工作。它总是说for部分的语法无效。我知道它必须是非常愚蠢/显而易见的事情,但任何帮助将不胜感激。
如果我创建了一个名为arg.py的程序,并将它放在下面的代码中并通过cat调用Python,它可以正常工作。这只是一个不符合要求的部分。
import sys
for line in sys.stdin:
print line
你为什么混合Python和命令行这样呢?只需使用'grep',或从Python打开文件。 – jonrsharpe
正如我在第一句话中所说的,我知道这不是最好的用例,我只是想看看我能否实现它。我通过命令行搜索日志来做很多事情,并且想知道我是否也可以使它适用于Python。 – Eric