Bash

Bash,從用點分隔的字元串中截斷IP

  • December 9, 2020

我有多個格式的結果

10.3.2.1.in-addr.arpa name hostname

我想去掉中間部分“.in-addr.arpa”並將IP地址反轉為,例如1.2.3.10。使用簡單的 bash one 班輪可以做到這一點嗎?在此先感謝,我從幾個小時以來一直在嘗試這樣做,而且有點卡住了。

perl

perl -pe 's/(\d+)\.(\d+)\.(\d+)\.(\d+)\.in-addr\.arpa/$4.$3.$2.$1/g' < input

sed與標準等效項相比,它更簡潔,更易讀:

d='\([0-9]\{1,\}\)'
LC_ALL=C sed "s/$d\.$d\.$d\.$d\.in-addr\.arpa/\4.\3.\2.\1/g" < input

那些替換所有出現的<d1>.<d2>.<d3>.<d4>.in-addr.arpawith <d4>.<d3>.<d2>.<d1>(其中<dX>是任何一個或多個十進制數字的序列),而其他所有內容都保持不變。

$ awk '{split($1,p,"."); $1=p[4]"."p[3]"."p[2]"."p[1]} 1' file
1.2.3.10 name hostname

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