2016-06-29 22 views
0

在同一行追加我有一個文件
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|檢查一個值和標籤根據該值和使用shell

在例子中有在頭
四個日期 我想根據該使用殼 例子的時間下檢查值的字段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,然後執行功能lh爲字段2-5
  • 定義函數LH,作爲一個返回L爲值< 100,和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'功能 –