我有一个文件,其中包含IP地址和端口号的顺序为:
ipaddress:端口
1.1.1.1:21
1.1.1.1:22
2.2.2.2:443
3.3.3.3:80
3.3.3.3:443
我需要以下格式
ipaddress的结果:port,port
1.1.1.1:21,22
2.2.2.2:443
3.3.3.3:80,443
假设输入文件中的行上没有尾随空格:
$ awk -F ':' 'BEGIN { OFS=FS } $1 in ports { ports[$1] = ports[$1] "," $2; next } { ports[$1] = $2 } END { for (ip in ports) print ip, ports[ip] }' file
3.3.3.3:80,443
1.1.1.1:21,22
2.2.2.2:443
该awk
脚本,
BEGIN { OFS=FS }
$1 in ports { ports[$1] = ports[$1] "," $2; next }
{ ports[$1] = $2 }
END { for (ip in ports) print ip, ports[ip] }
首先将输出字段分隔符设置为与输入字段分隔符相同,它是一个:
字符(在命令行中用给出-F ':'
),然后它将测试当前的第一个字段(IP地址)是否为的ports
阵列。如果是的话,端口号(第二个字段)将以逗号作为分隔符添加到该阵列条目。如果不是,则仅将阵列中的条目设置为该IP地址的端口号。
最后,所有存储的IP地址都将打印出其收集的端口号。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句