python 系統函式呼叫sed分組

longer3281發表於2019-01-18

當Python的os包的popen函式呼叫流處理工具sed,並進行分組時,資料中真是的()過濾掉。

例如:

filecmd="echo '### @1=-8446248500677595600 (10000495573031956016)'|sed 's/@1/from_uuid/;s/\(^.*=\).* (\(.*\))/\1\2/'" #將括號中的值10000495573031956016替換掉=號右邊的-8446248500677595600

vv_cmdline_undostring=os.popen(filecmd).readlines()

print vv_cmdline_undostring

結果為:['\x01\x02\n']

截圖如下:

如果在拼接的字串前面加r,即可正確進行轉義。

例如:

>>>filecmd=r"echo '### @1=-8446248500677595600 (10000495573031956016)'|sed 's/@1/from_uuid/;s/\(^.*=\).* (\(.*\))/\1\2/'" #將括號中的值10000495573031956016替換掉=號右邊的-8446248500677595600

>>>vv_cmdline_undostring=os.popen(filecmd).readlines()

>>> print vv_cmdline_undostring

['### from_uuid=10000495573031956016\n']

截圖如下:


【注意】

如果引數命令由多端字串拼接時,需要在每段字串前面帶上r。

如:

filecmd=r"echo '### @1=-8446248500677595600 (10000495573031956016)'" +r"|sed 's/@1/from_uuid/;s/\(^.*=\).* (\(.*\))/\1\2/'"

否則,就不能獲取正常的資料。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9606353/viewspace-2564178/,如需轉載,請註明出處,否則將追究法律責任。

相關文章