我有这个 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。