Python搜索字符串一个班轮

时间:2016-11-18 21:36:23

标签: python-2.7

我试图更多地使用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

1 个答案:

答案 0 :(得分:2)

不幸的是,在if, for之类的python中引入缩进的构造不允许在其他语句之前。

即使在您的arg.py文件中,也请尝试以下操作:

import sys; for line in sys.stdin: print line

您会发现语法也无效,导致同样的错误。

所以,回答你的问题,你的问题不在于你在终端中运行程序,但问题在于python语法本身。它不支持这种语法 查看相关的question