私はAWKプログラミング言語からawkを学んでおり、例の1つに問題があります。
$ 2が値(たとえば1
)と等しい場合に$ 3を出力したい場合は、次のコマンドを使用して問題なく動作します。
awk '$2==1 {print $3}' <infile> | more
しかし、1を別の検索条件(たとえばfindtext
)で置き換えると、コマンドは機能しません。
awk '$1== findtext {print $3}' <infile> | more
これは出力を返さず、入力ファイルに「findtext」が存在することを確認しています。
私もこれを試しましたが、うまくいきません:
awk '$1== "findtext" {print $3}' <infile> | more
これが 'test'という名前の私のテストファイルで、スペースで区切られた9行と8フィールドがあります。
1 11 0.959660297 0 0.021231423 -0.0073 -0.0031 MhZisp
2 14 0.180467091 0.800424628 0 0.0566 0.0103 ClNonZ
3 19 0.98089172 0 0 -0.0158 0.0124 MhNonZ
4 15 0.704883227 0.265392781 0.010615711 -0.0087 -0.0092 MhZisp
5 22 0.010615711 0.959660297 0.010615711 0.0476 0.0061 ClNonZ
6 23 0.715498938 0 0.265392781 -0.0013 -0.0309 Unkn
7 26 0.927813163 0 0.053078556 -0.0051 -0.0636 MhZisp
8 44 0.55626327 0.222929936 0.201698514 0.0053 -0.0438 MhZisp
9 31 0.492569002 0.350318471 0.138004246 0.0485 0.0088 ClNonZ
これが私がしたことと出力です:
$awk '$8 == "ClNonZ" {print $3}' test
$ grep ClNonZ test
2 14 0.180467091 0.800424628 0 0.0566 0.0103 ClNonZ
5 22 0.010615711 0.959660297 0.010615711 0.0476 0.0061 ClNonZ
9 31 0.492569002 0.350318471 0.138004246 0.0485 0.0088 ClNonZ
私はこれが$ 3で、$ 8に "ClNonZ"が含まれていることを期待しています。
0.180467091
0.010615711
0.492569002
awkコマンドが何も返さなかった理由がわかりません。何かご意見は?
文字列値 "findtext"を引用符で囲む必要があります。それ以外の場合は、変数名です
—
evil otto
「findtext」を使用して二重引用符を試してみましたが、機能しません..それが私を困らせる理由です
—
user1687130
「動作しない」は何も教えてくれません。正確な入力、正確なコード、期待される出力、および実際の出力を示します。
—
chepner 2013