Sed

從 IP.port 中提取 IP

  • March 30, 2022

我已經做了很多探勘,但還沒有找到我的問題的答案。

目前,我有以下命令:

# netstat | grep telnet | grep ESTABLISHED | awk 'NR==1{ print $5}'

它返回如下內容:

192.168.15.73.64759

由此,我只想獲得沒有埠的IP。所以,

192.168.15.73

我正在執行此操作的系統正在執行嵌入式 unix 變體,並且不支持 -o 作為 grep 的選項。該系統支持 sed 這可能是最好的路線,但我根本不熟悉該應用程序。

誰能告訴我我可以添加什麼來獲得我正在尋找的輸出?

您可以使用cutsed

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]*$//'

這將“句點後跟零個或多個數字後跟行尾”替換為“無”。

引用自:https://unix.stackexchange.com/questions/383508