Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash AWK脚本文件:组合2个命令_Bash_Csv_Awk - Fatal编程技术网

Bash AWK脚本文件:组合2个命令

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

我想合并这两个命令:

命令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","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