簡體   English   中英

帶有grep / sed / awk命令的Python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM