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

引用はgawk for Windows 用です。Cygwin では、一重引用符を使用する必要があります: gawk '$1 > 1197'.

于 2013-07-29T19:04:36.217 に答える
0

私はついに問題を発見しました。それは特殊文字によるものでした。より大きなコマンドの前にシンボル ^ を導入すると (スケープ文字として、詳細はこちら)、機能します。

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

答えてくれてありがとう。これが同じ問題を抱えている他の人々に役立つことを願っています。

于 2013-07-30T13:44:18.220 に答える