2016-05-23 4 views
0

awkコマンドで分割して比較したい。awkで分割して比較する

入力ファイル(タブ区切り)

1 aaa 1|3 
2 bbb 3|3 
3 ccc 0|2 

ろ過

  1. まず列値> 1
  2. によって分割さ3番目の列の値の
  3. 最初の値 "|" "|"> 2

プロセス

  1. はによって大きなより1つの
  2. スプリット3番目の列の値があれば最初の列の値を比較します
  3. 大きいより2
  4. 印刷する場合2のみ

コマンドライン(例)

awk -F "\t" '{if($1>1 && ....?) print}' file 

出力

2 bbb 3|3 
よりも第1の値が大きい場合は3番目の列の最初の値を比較します

上記の処理のためのコマンドラインを教えてください。

+0

TRを「|」 '' 1 && $ 4> 2 {print}' –

+0

これで問題が解決しない場合は、明快さを加えてください。 –

答えて

5

あなたはタブまたはパイプのいずれかにフィールドセパレータを設定し、第一及び第三の値を確認することができます。

awk -F'\t|\\|' '$1>1 && $3>2' file 

または

awk -F"\t|\\\\|" '$1>1 && $3>2' file 

あなたはこのすべての文字は、この包括的な答えにエスケープについて読むことができますEd Morton著awk: fatal: Invalid regular expression when setting multiple field separators

そうでない場合、あなたは3番目のフィールドを分割し、最初のスライスの値をチェックすることができます

awk -F"\t" '{split($3,a,"|")} $1>1 && a[1]>=2' file 
+1

うまくいきます。どうもありがとうございました。非常に便利なリンクもありがとう。 –

関連する問題