2017-06-12 33 views
0

gzファイルに文字列(例:$ 12:33-Aと$ 33:33A)が含まれている$ 12と$ 33の値を含むgzファイルがあり、awkコマンドを作成しようとしています値は " - "が$ 12にあるが$ 13にはない回数を数えます。文字列を比較するawkコマンド

は私が持っている:gzcat test.gz | awk '{if ($12!=$33 && $12~/ -/ && $33!~/ -/) wc -l; else null} | wc -l'

しかし、そのコマンドは動作し、私が希望の結果を得るように見えることはありません。

+0

あなたのプログラム(すなわち、プログラムの非圧縮2列バージョン)を示す2つの列を持つサンプルデータファイルが失敗し、期待した結果を教えてください。 – jas

+0

文字列 "33-A"はハイフンの前にスペースがないので、 '$ 12〜/ - /'にマッチしません... – twalberg

答えて

2

それは暗黙のだから別に平等をチェックする必要はありません、とwcを使用する必要はありません、awk

... | awk '$12~/-/ && $33!~/-/{count++} END{print count+0}' 

PSをカウントすることができます。あなたのスクリプトは有効なawkスクリプトではありません。また、フィールド33または13もありますか?

+0

awkの機能についてもっと知りたいときは、 ! – kastsabug

+0

'print count + 0'は違いがなくても数値出力を保証します。 –

+0

はい、もちろん、修正済みです。 – karakfa