0

我正在尝试从 Windows 中的批处理文件中使用一个简单的 gawk 命令。gawk.exe 在整个 cygwin 中都可以访问。这是命令:

gawk '{if ( $1 GTR 1197 ) {print ($0) }  else {} }' %input% > %output%

我想要做的是:如果输入文件的第一列大于 1197 值,则打印所有行。输入文件具有以下格式:

16.0   23    40
17.0    4   -40
17.0   23    -4
18.0    4     8

由于未知原因,我的输出等于输入,因此无法识别 if 语句。

4

2 回答 2

1

的代码gawk是:

 gawk "$1 > 1197" "%input%" > "%output%"

例子:

>类型文件
16.0 23 40
17.0 4 -40
17.0 23 -4
18.0 4 8
2000 6 9
1197 2 1
>gawk "$1 > 1197" 文件
2000 6 9

报价适用于 Windows 的 gawk。在 Cygwin 上,您应该使用单引号:gawk '$1 > 1197'.

于 2013-07-29T19:04:36.217 回答
0

我终于找到了问题,这是由于特殊字符造成的。在更大的命令之前引入符号 ^ (作为转义字符,更多信息在这里)它起作用:

gawk ' $1 ^> 1197 { print } ' %input% > %output%

感谢您的回答。希望这可以帮助其他有同样问题的人。

于 2013-07-30T13:44:18.220 回答