14

私はgrepとawkが初めてです-Windows 7を使用しています(GnuWinからWindows用のgrepとawkをダウンロードしました)。

このスクリプトの実行に問題があります:

grep -Fwf dictionary.txt frequency.txt | awk '{print $2 "," $1}'

エラーが発生します:

awk: '{print
awk: ^ 式の無効な文字 '''

Windowsで二重引用符を使用する必要があることに関係があると思いますが、考えられるすべての組み合わせを試しましたが、それでも機能しません。

誰でも助けることができますか?ありがとう

4

7 に答える 7

26

Windows では、二重引用符を使用して awk コマンドを引用する必要があります。そう

grep -Fwf dictionary.txt frequency.txt | awk '{print $2 "," $1}'

に変更する必要があります

grep -Fwf dictionary.txt frequency.txt | awk "{print $2 "," $1}"

ただし、二重引用符内で二重引用符を使用することはできません。エスケープする必要があります。\Windows では、単純にエスケープすることはできません。次の構文が必要です。

grep -Fwf dictionary.txt frequency.txt | awk "{print $2 \"",\"" $1}"

そうです、それは二重引用符内を表す\""です。"

于 2011-11-28T08:54:56.527 に答える
6

Windows では、コマンド ライン項目のエスケープは常に面倒です。gawk -f最後の手段として、おそらく!を使用できます。

だから:あなたのファイルscript.awkには以下が含まれています:

print $2,$1

あなたがやるgrep -Fwf dictionary.txt frequency.txt | awk -f script.awk

于 2011-01-31T15:06:10.833 に答える
4

awk スクリプトを二重引用符で囲み、print ステートメントに埋め込まれた引用符を古き良きバックスラッシュでエスケープする必要があります: [g]awk "BEGIN {print \"Hello escape char!\"}"

于 2011-03-17T13:34:08.497 に答える
1

括弧は二重引用符で囲む必要があるため、括弧で囲まれた式の中に二重引用符が 3 つ必要です。

例えば:

gawk "{print $2 """,""" $1}"

于 2013-10-11T17:48:00.783 に答える
1

以下は、input.csv を受け取ってから output を受け取る短い例ですnew.csv

gawk < input.csv -F, "{print $1 \"",\"" $5} ">new.csv
于 2013-07-19T21:57:15.013 に答える
0

陽水はこう言った。

...二重引用符内で二重引用符を使用することはできません。エスケープする必要があります。Windows では、単純に \ を使用してエスケープすることはできません。

ReluctantBIOSGuy は、彼の例では \" だけを使用しています。

\"" と \" の両方を試しましたが、どちらもうまくいきました (Windows XP では、コマンド ラインとバッチ ファイルの両方で gawk)。

出力に " を含む例を次に示します (c コードの文字列リテラル)。

FCIV\fciv -add ..\07-Sources -type *.h -type *.c -bp ..\07-Sources | find /V "//" | sort /+33 > listof.md5
FCIV\fciv -add listof.md5 | find /V "//" | gawk "{print \"static const char md5[] = \\\"\" $1 \"\\\";\"}" > ..\07-Sources\generated\md5.c
于 2014-02-19T17:23:16.473 に答える