Bash AWK脚本文件:组合2个命令
我想合并这两个命令: 命令1:Bash AWK脚本文件:组合2个命令,bash,csv,awk,Bash,Csv,Awk,我想合并这两个命令: 命令1: `BEGIN { ip = ARGV[2] split(ip, octets, ".") for (i = 1; i <= 4; i++) { dec += octets[i] * 256 ** (4 - i) } printf("%i\n", dec) }` 要读取的文件: "16777216","16777471","apnic","1313020800","AU","AUS","Australi
`BEGIN {
ip = ARGV[2]
split(ip, octets, ".")
for (i = 1; i <= 4; i++) {
dec += octets[i] * 256 ** (4 - i)
}
printf("%i\n", dec)
}`
要读取的文件:
"16777216","16777471","apnic","1313020800","AU","AUS","Australia"
"16777472","16777727","apnic","1302739200","CN","CHN","China"
"16777728","16778239","apnic","1302739200","CN","CHN","China"
"16778240","16779263","apnic","1302566400","AU","AUS","Australia"
"16779264","16781311","apnic","1302566400","CN","CHN","China"
第一个命令用于将IPV4地址转换为十进制,第二个命令用于搜索.csv文件中的十进制
因此,我想使用如下命令:
awk-f script.awk fileToRead.csv 10101100.00010000.1111111 0.0000000 1
将两个文件连接起来几乎可以实现您想要的功能(在对ARGV[2]进行重映射之后,因此它不会被视为文件):
只是想把它整理一下。谢谢!!!这正是我需要的。我不知道我们可以收拾argv.:)好你可以,但不是真的。我的意思是,您可以删除它或将其设置为null,然后脚本主体将跳过它,但是如果您在结尾部分循环使用ARGV,那么仍然会有一个null字符串条目。你知道你可以省略整个
END
部分,对吗?我不确定你是不是因为认为你必须拥有它才在里面打印东西。当然,BEGIN也是这样,但实际上您正在使用它。您发布了示例输入,但在给定该输入和您提供的命令的情况下忘记添加预期输出。
"16777216","16777471","apnic","1313020800","AU","AUS","Australia"
"16777472","16777727","apnic","1302739200","CN","CHN","China"
"16777728","16778239","apnic","1302739200","CN","CHN","China"
"16778240","16779263","apnic","1302566400","AU","AUS","Australia"
"16779264","16781311","apnic","1302566400","CN","CHN","China"
BEGIN {
ip = ARGV[2]
split(ip, octets, ".")
for (i = 1; i <= 4; i++) {
dec += octets[i] * 256 ** (4 - i)
}
ARGV[2] = ""
ARGC--
}
BEGIN{
FS=",";
}
{
if ($4 == dec){
print $7;
}
}
END {
print "END";
}
BEGIN {
split(ip, octets, /[.]/)
for (i = 1; i <= 4; i++) {
dec += octets[i] * 256 ** (4 - i)
}
FS=","
}
$4 == dec {
print $7
}
END {
print "END"
}
awk -v 10101100.00010000.11111110.00000001 -f script.awk fileToRead.csv