2016-06-29 16 views
0

を使用して、同じ行に追加私は、ヘッダ
の4つの日付がある例で
NUMBER|05-1-2016|05-2-2016|05-3-2016|05-4-2016|
0000000 | 0 | 225.993 | 0 | 324|
0003450 | 89| 225.993 | 0 | 324|
0005350 | 454 | 225.993 | 54 | 324|がその値に応じた値とタグをチェックして、シェル

としてファイルを持っています フィールド '1'の数字の日付の値と、シェルを使用したタグの値を確認したい 値が0〜100の場合は 'L'、100より大きい場合は 'H'タグ
だから出力
NUMBER|05-1-2016|05-2-2016|05-3-2016|05-4-2016|05-1-2016|05-2-2016|05-3-2016|05-4-2016|
0000000 | 0 | 225.993 | 0 | 324| L | H | L | H|
0003450 | 89| 225.993 | 0 | 324|L | H | L | H|
0005350 | 454 | 225.993 | 54 | 324|H | H | L | H|

+0

[編集ヘルプ](http://stackoverflow.com/editing-help)をご覧ください。 – Cyrus

答えて

1

ように迅速かつ汚い例でなければならない、すなわち:

  • は、入力および出力フィールドセパレータ(-F以下OFSを設定します)〜|,
  • は、他のすべてのヘッダー(NR==1のレコード)
  • 、フィールド1-5を印刷し、次いでフィールド2-5
  • 、値< 100用Lを返すものとして、機能LHを定義するための機能lhを実行する印刷しますそして他のすべてのためのH

コード:

awk -F \| ' 
BEGIN {OFS="|"} 
NR==1 {print} 
NR > 1 {print $1, $2, $3, $4, $5, lh($2), lh($3), lh($4), lh($5) } 
function lh(val) { return (val < 100) ? "L" : "H"} 
' file.txt 

代替機能lh

function lh(val) { 
    result = ""; 
    if (val < 100) { 
     result = "L"; 
    } else { 
     result = "H"; 
    } 
    return result; 
} 
+0

ありがとうございますが、条件が2以上の場合は、実際には5です。気になって申し訳ありません。 – meet

+0

'lh'関数を拡張することができます –

関連する問題