【发布时间】:2016-12-15 12:22:39
【问题描述】:
我一直在构建一个 sed 表达式,该表达式将解析 python 文件的导入并提取模块的名称。
这是我解决的一个简单示例(我需要输出是不带“as”或任何空格的模块名称..):
from testfunctions import mod1, mod2 as blala, mod3, mod4
到目前为止我所拥有的:
grep -ir "from testfunctions import" */*.py | sed -E s/'\s+as\s+\w+'//g | sed -E s/'from testfunctions import\s+'//g
在上述情况下,这确实为我提供了所需的结果。
问题: 在导入如下的文件中:
from testfunctions import mod1, mod2 as blala, mod3, mod4 \
mod5, mod6 as bla, mod7 \
mod8, mod9 ...
有什么想法可以改进管道表达式以处理多行吗?
【问题讨论】:
-
你必须使用
sed吗?awk会更简单(为什么不是 python?)祝你好运。 -
sed 是一个行编辑器,它读取单行,您可以使用
N或n来获取下一行。此外,无论如何,您只会从 grep 中返回一行。 -
@shellter 我实际上认为这在 sed 中更简单。你只需得到下一行,直到没有更多的转义,然后做一个简单的 sub。
-
@123 :我很乐意为您的工作解决方案投票:-)。祝大家好运。
-
为什么需要这样做?您可以使用 python 通过
ast模块为您获取该信息,无论任何行格式如何
标签: python regex bash sed grep