【发布时间】:2018-11-09 11:04:24
【问题描述】:
示例 sed 命令:
$ echo "/dev/sda1 /dev/xvdb3" | sed -r 's%(/dev/)(xv|s)(d[a-z])[0-9]*%\1(xv|s)\3%g'
/dev/(xv|s)da /dev/(xv|s)db
如何转换成python代码?
尝试了以下代码:
device = "/dev/sda5"
m = re.match(r"(/dev/)(xv|s)(d[a-z])", device)
print m.group(0)
出现错误:
print m.group(0)
AttributeError: 'NoneType' object has no attribute 'group'
【问题讨论】:
-
我想帮助你摆脱
sed以支持 python,但它真的太宽泛了,而且是“为我写代码”的请求。对不起,我不能原谅。 -
sed只是一个使用正则表达式的操作工具。考虑将re库与re.compile、re.search/re.match和re.sub一起使用 -
只是一个提示:
sed一次读取一行,对其应用转换(这里是基于单个正则表达式的替换)并输出该行。 python 转换将是一个脚本:1/ 从标准输入读取行 (for line in sys.stdin:),2/ 应用替换(使用re模块)和 3/ 输出更改的行(print或sys.stdout.write)。编写一些代码,如果卡在某个地方,请随时提出更精确的问题......