我在格式中有多个结果
10.3.2.1.in-addr.arpa name hostname
Run Code Online (Sandbox Code Playgroud)
我想删除中间部分“.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
Run Code Online (Sandbox Code Playgroud)
与标准sed
等价物相比,它不那么冗长且更清晰:
d='\([0-9]\{1,\}\)'
LC_ALL=C sed "s/$d\.$d\.$d\.$d\.in-addr\.arpa/\4.\3.\2.\1/g" < input
Run Code Online (Sandbox Code Playgroud)
那些替换所有出现的<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
Run Code Online (Sandbox Code Playgroud)