私にテーブルがあります。
1 1
1 0
0 1
0 0
次の2つの選択基準セットを使用して行を印刷したいと思います。または。
標準セット1:(列1> = 1および列2 = 0)
または
標準セット2:(列1 = 0、列2> = 1)
予想される出力は次のとおりです。
1 0
0 1
似たようなことを書いていません。
awk '($1>=1 && $2=0)||($1=0 && $2>=1) {print $0}'
問題は何ですか?
ベストアンサー1
問題は、=
同等性テスト()の代わりに割り当て演算子()を使用していることです==
。何かにゼロを割り当てたブール結果は「false」です。これがテストが成功しない理由です。
一般的なawk
コマンドは
awk '($1 >= 1 && $2 == 0) || ($1 == 0 && $ 2 >= 1)'
{ print $0 }
これは、ジョブがないすべての条件に対するデフォルトのジョブであるため、必要ありません。
最初の列と2番目の列で同じ値を持つ行だけをスキップしたい場合(与えられたデータに対して同じ出力を提供):
awk '$1 != $2'
どちらの場合も、出力は次のようになります。
1 0
0 1