Bash
Bash,從用點分隔的字元串中截斷IP
我有多個格式的結果
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.arpa
with<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