我有一个长ip格式列表,我想将其转换为点线格式 做一些研究,发现这个伟大的bash
#!/usr/bin/awk -f
# dec2ip
BEGIN {
dec = ARGV[1]
for (e = 3; e >= 0; e--) {
octet = int(dec / (256 ^ e))
dec -= octet * 256 ^ e
ip = ip delim octet
delim = "."
}
printf("%s\n", ip)
}
但它一个接一个地转换 请如何使其打开文件并将所有IP转换然后打印结果到文本文件 最好的问候
答案 0 :(得分:0)
Perl救援!
perl -lnwe '$, = "."; print unpack "C*", pack "N", $_' < input-file
$,
设置分隔符。 pack的N
模板将字符串(如2130706433)转换为字节序列(7f 00 00 01
),unpack的C*
模板将其更改为列表相应的数字。
答案 1 :(得分:0)
给定的awk
代码段假设它将被调用一次。您可以对其进行调整以处理输入文件的每一行。
awk '{ dec=$0;
delim="";
for (e = 3; e >= 0; e--) {
octet = int(dec / (256 ^ e));
dec -= octet * 256 ^ e;
ip = ip delim octet;
delim = ".";
}'
printf("%s\n", ip)}' list_of_integer_ip_addresses.txt