GAWK GREP管道重定向到输出文件不起作用



我有这个 file.txt

a b c
a f g
e h j

我写了一个尴尬脚本

BEGIN {...}
{...}
END {
    a = "a"
    b = "b"
    system("grep " a " file.txt | grep " b " > t")
}

我希望它在文件t中打印a b c。从Windows 7上的ConEmu运行相同的脚本将产生一个空的t文件。另一方面,执行grep a file.txt | grep b > t将产生预期的结果。

为什么我这样做:我正在从带有多个字段分离器的复杂文件中解析晦涩的数据(如果您愿意的话,或者嵌套的字段(。在拥有输入文件的结构(不是file.txt(之后,由于每行都是将执行的命令,并且它们的顺序对我很重要,所以我想知道是否设置了某物,并且是否是使用AWK在输入文件中引入新命令的条件。条件文件数据库是file.txt

为什么?难道我做错了什么?我以某种方式盲目吗?在Windows 7上,Gawk 4.2.0,(GNU(GREP 2.4.2

我也无法找到可能有帮助的类似问题:如果您知道,请以重复的方式标记。

,因为我的目标是将GREP输出重定向到awk脚本中,并且由于system()方法不起作用,所以我今天早上发现:

BEGIN {...}
{...}
END {
    a = "a"
    b = "b"
    ask = "grep " a " file.txt | grep " b
    while (ask | getline _foo) {
        print _foo > "dump.txt"
    }
    close(ask)
}

工作正常。作为奖励,我可以对grep返回的每行进行工作。同样,这是在Windows 7中使用gawk 4.2.0和CONEMU。

最新更新