2017-11-27 18 views
0

cat test.txtawkのフィル​​タが不要なライン

が生成を生成します。

1) Amit  Physics 80 
2) Rahul Maths  90 
3) Shyam Biology 87 
4) Kedar English 85 
5) Hari  History 89 
5) Deepak  Maths 98 

実行:

1) Amit  Physics 80 
5) Deepak  Maths 98 

私の質問で

awk '$4 == 80 END {print $0}' test.txt 

結果

出力の最後の行は、4番目の列に98があります。 98は明らかに80ではありません。しかし、awkクエリはそれを返します。どうして?

+0

あなたが投稿したコードは、あなたがそれがないと言うの出力を生成することはできません。 ENDの前にセミコロンや改行があった場合、いくつかのawkでそれを行うことができます。問題を抱えている実際のスクリプトを投稿することが重要です。ちょうどそのように見えるものではありません。 –

+0

が@EdMorton私は修正立って、私のスクリーンショットhttps://drive.google.com/file/d/11X9nWvB_OseYH_-1GwbxWTVmHI3fZBbk/view?usp=sharing – user3219492

+0

を見てください、あなたは明らかに壊れたのawkを使用しています。 '== 80 END'がテストされているか、2)awkのシンボルENDが外に現れとして認識される前に初期化されていない変数ENDはヌル文字列として扱われ、80で無駄に連結された)があり、スクリプトの唯一の2の有効な解釈だと、それらは1ですコンテキストと構文エラーが印刷されます。実行しているawkはawkのシンボルとしてENDを認識し、スクリプトの残りの部分を終了して有効な位置にあるかのように扱います。私は非常にそれが間違っているかもしれないことを誰が知っているとして新しいawkを取得することを強くお勧めしますか? –

答えて

3

あなたはENDブロック内にそれを告げたので、それは最後の行を印刷しています。ただしてください:

$4 == 80が真である場合、これは各行を評価して印刷します。 END句では、$ 0に最後の行の値が割り当てられます。 END{print $0}は無条件に最後の行を出力します。

関連する問題