python-express-sed系统调用替换

2024-04-18 14:01:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道这是一个python错误还是其他什么。在

我有一个bash命令来获取br0ip地址。它在bashshell中工作得很好

$ip -o -4 address show br0 |  sed "s/^.*inet *\(.*\)\/[0-9]* brd.*$/\1/g"
$192.168.10.1  #output this

但有一次我把它和python结合在一起,它给了我一个奇怪的结果:

^{pr2}$

我用system()尝试过PHP,它工作得很好。我也尝试了python中的子进程,结果是一样的。在

可能是python中的管道处理问题吗?在

我想知道python中发生了什么,或者我是否遗漏了一些其他的东西?在

谢谢。在


Tags: 命令ipbashoutputaddress地址show错误
1条回答
网友
1楼 · 发布于 2024-04-18 14:01:52

Python正在解释字符串中的反斜杠,请尝试使用原始字符串,即r'ip -o -4 address show br0 | sed "s/^.*inet *\(.*\)\/[0-9]* brd.*$/\1/g"'

>>> import commands as c 
>>> c.getstatusoutput(r'ip -o -4 address show br0 |  sed "s/^.*inet *\(.*\)\/[0-9]* brd.*$/\1/g"')

如果你好奇的话,试试这个并注意一下区别:

^{pr2}$

[问题是python将“\1”视为字符串'\x01']

相关问题 更多 >