2017-12-19 21 views
0

をフィルタリングしていないここに代わり、私は私が持っている、しかし、$ファイルのすべてのレコード(適用すなわちなし条件)のAwk(COND1 || COND2)の場合は、何も

を取得し、私は理論的には

awk 'BEGIN {FS=OFS=","} 
       {if($4 != "" || $4 != "Store Number") 
       print $2}' $file >>out; 

を実行したいものです以下の作品てチェックすることを:!!

awk 'BEGIN {FS=OFS=","} 
       {if($4 != "") 
       print $2}' $file >>out; 

は(COND1 || COND2)、〜、もし((COND1)||(COND2))を含むフレーズのほとんどの組み合わせを試してみましたが、どれも仕事。私はWindows 10 bashでawkを実行しています。

+3

'$ 4 = "" || $ 4!= "店舗番号"は常に真です。文字列は常に空ではないか、特定の文字列ではありません。あなたは '&&'を意味しましたか? –

+1

'awk 'BEGIN {FS = OFS ="、 "} $ 4!=" "&& $ 4!="店舗番号 "'" $ file "'は動作するはずです – anubhava

+1

果物がバナナでない果物が欲しい、イチゴ。だから、果物は一切ありません(イチゴはバナナではないのでフィルターを通過し、バナナはイチゴではないのでフィルターも通過します)。代わりに、AND '&&'が必要です。 – JNevill

答えて

1
$4 != "" || $4 != "Store Number" 

のみ文字列が同時に両​​方の"""Store Number"ものです!

これは明らかに不可能なので、見たように何もフィルタリングしません。

おそらく&&を使用するつもりです。 !あなたがawkの条件部を使用する場合はさておき、あなたのコードを少し簡略化することができますよう


BEGIN {FS=OFS=","} 
$4 != "" && $4 != "Store Number" {print $2} 
0

aまたはbにはすべてが含まれていません(a == bを除く)。

回答:!= & & = B素早く答えを

おかげ;;!私のセット/ロジックをブラッシュアップする時間。その状態を失敗する可能性が

関連する問題