![](/img/trans.png)
[英]python subprocess call to compare two CSV files using grep or awk or sed
[英]Python with grep/sed/awk command
我是Python
新手,如果我提供了端口名,則試圖弄清楚如何從/etc/services
獲取端口號。
/etc/services
包含以下值
DB2_test 60000/tcp
DB2_test_1 60001/tcp
DB2_test_2 60002/tcp
DB2_test_3 60003/tcp
DB2_test_4 60004/tcp
DB2_test_END 60005/tcp
命令
db2port=os.popen("db2 get dbm cfg | grep -i Service | awk '{{print $6}}'").read()
print(db2port)
返回DB2_test
以下命令不起作用。 我只想看一下DB2_test的值為60000:
getnum = "cat /etc/services | sed -n '/\{db2port}\s/p' | awk '{print $2}' | sed 's/\/tcp$//'"
print(getnum}
無需調用awk,sed等。純Python解決方案是:
for line in open("/etc/services").readlines():
parts = line.split()
if parts and parts[0] == 'DB2_test':
port, protocol = parts[1].split('/')
print(port)
假設變量services
包含/etc/services
中的文本。
port_map = {
name: int(value.split('/')[0])
for name, value in (
line.split() for line in services.splitlines()
)
}
現在您有了從服務名稱到其端口的映射,例如, port_map["DB2_test"] == 60000
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.