在Python中执行复杂的bash脚本

时间:2016-05-18 07:46:00

标签: python

我有一个bash脚本,我在我的.csv文件上运行,然后在bash脚本的输出上运行python脚本。我想将所有内容整合到一个脚本中,但是bash脚本非常复杂,我无法找到在Python中使用它的方法。

grep "$(grep -E "tcp|udp" results.csv | grep -E "Critical|High|Medium" | awk -F "\"*,\"*" '{print $8}')" results.csv | sort -t',' -k4,4 -k8,8 | awk -F "\"*,\"*" '{print $5,"port",$7"/"$6,$8}' | sed '/tcp\|udp/!d' | awk '!a[$0]++' | sed '/,port,\/,/d' > out

我把它作为一个字符串和一个带有子进程的参数化命令尝试过,但它似乎只是太多复杂的字符,无法工作。

有没有更简单的方法在Python中运行此命令?

P.S。我知道有很多问题&关于同一主题的答案,但没有一个对我有用。

1 个答案:

答案 0 :(得分:0)

你能逃脱所有的"双引号" \请尝试一下,让我们知道它是否有效:

os.system(" grep \"$(grep -E \"tcp|udp\" results.csv | grep -E \"Critical|High|Medium\" | awk -F \"\\\"*,\\\"*\" '{print $8}')\" results.csv | sort -t',' -k4,4 -k8,8 | awk -F \"\\\"*,\\\"*\" '{print $5,\"port\",$7\"/\"$6,$8}' | sed '/tcp\|udp/!d' | awk '!a[$0]++' | sed '/,port,\/,/d' > out ")

整个命令可以放入" your_command_with \"转义\"双引号"。 祝你有愉快的一天