Sed
從 IP.port 中提取 IP
我已經做了很多探勘,但還沒有找到我的問題的答案。
目前,我有以下命令:
# netstat | grep telnet | grep ESTABLISHED | awk 'NR==1{ print $5}'
它返回如下內容:
192.168.15.73.64759
由此,我只想獲得沒有埠的IP。所以,
192.168.15.73
我正在執行此操作的系統正在執行嵌入式 unix 變體,並且不支持 -o 作為 grep 的選項。該系統支持 sed 這可能是最好的路線,但我根本不熟悉該應用程序。
誰能告訴我我可以添加什麼來獲得我正在尋找的輸出?
您可以使用
cut
或sed
:echo 192.168.15.73.64759 | cut -d '.' -f 1-4 echo 192.168.15.73.64759 | sed -E 's,\.[0-9]+$,,'
或者
awk
:echo 192.168.15.73.64759 | awk -F '.' '{print $1"."$2"."$3"."$4}'
剛剛了解了 ss:
ss -n -o state established '( dport = :telnet or sport = :ssh )' | awk 'NR==2 { print substr($5, 1, index($5, ":")-1) }'
我使用 NR==2 跳過標題並僅獲取輸出的第一行,以與您的 netstat/grep 行為相對應。awk 程式碼的其餘部分列印 $5,但從第一個字元開始,直到找到“:”的索引,減一。
如果系統缺失
ss
,那麼你可以使用 sed:echo 192.168.15.73.64759 | sed 's/\.[0-9]*$//' netstat | grep telnet | grep ESTABLISHED | awk 'NR==1{ print $5}' | sed 's/\.[0-9]*$//'
這將“句點後跟零個或多個數字後跟行尾”替換為“無”。