Python 2.7 Python搜索字符串一行

Python 2.7 Python搜索字符串一行,python-2.7,Python 2.7,我正在尝试更多地使用Python,我知道这不是它的最佳使用案例,但它困扰着我为什么不能让它工作 我目前正在使用Python2.7.6,我想对一个文件进行cat,然后根据regex从中提取特定字符串。下面的代码可以很好地满足我的要求,但只看第一行 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.std

我正在尝试更多地使用Python,我知道这不是它的最佳使用案例,但它困扰着我为什么不能让它工作

我目前正在使用Python2.7.6,我想对一个文件进行cat,然后根据regex从中提取特定字符串。下面的代码可以很好地满足我的要求,但只看第一行

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

不幸的是,在python中引入缩进的结构(如
if、for
等)前面不允许有其他语句

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

import sys; for line in sys.stdin: print line
您将发现语法也是无效的,这将导致相同的错误

因此,要回答您的问题,您的问题不是在终端中运行程序,而是python语法本身的问题。它不支持这种语法
查看一个相关的

为什么要这样混合Python和命令行?只需使用
grep
,或者从Python中打开文件。正如我在第一句话中所说的,我知道这不是它的最佳用例,我只是想看看是否可以让它工作。我通过命令行搜索日志做了很多工作,我想看看是否能让它也适用于Python。谢谢你提供的信息。我看到了其他用于语句的一行程序,所以我认为它总体上是有效的。我没有想到会有其他声明出现。@Eric我很高兴我能帮上忙。如果您对答案感到满意,请不要忘记对答案进行投票,并将其标记为解决方案
import sys; for line in sys.stdin: print line