2015-09-07 300 views
0

我有一個要求來比較輸出的兩列,它們是數字,檢查它們是否相等,如果它們相等則繼續執行一組語句,否則打印一組語句以防他們不平等。比較shell腳本中的輸出的兩列

# lsvg -l appvg | grep 2rrdbase_lv 
2rrdbase_lv   jfs2  8  8  1 open/syncd /lpar2rrd 

從上面的輸出,我需要兩列(列3用數字值進行比較「8」 &柱4用數字值「8」,檢查它們是否相等,並打印一組語句如果平等的,否則,如果未等於分支到另一組語句

希望如果有人能幫助我解決這個

+0

可能很好顯示你到目前爲止嘗試了什麼 – fedorqui

+1

,並添加了幾行樣本輸入以及給定輸入的預期輸出。 –

+0

@EdMorton我需要在該輸出中尋找一個特定的文件系統,這就是爲什麼我已經grep'd'2rrdbase_lv',然後操作繼續檢查列3和4並檢查它們是否相等。 如果它們相等,則分支到一組語句,如果它們不相等,則分支到另一組語句。 –

回答

2

篩選可能:。

lsvg -l appvg | awk '{if($3==$4){print "Equal "} else {print "Unequal"}}' 

或格式化這樣,如果你有很多的語句:如果你要檢查第3,4列是相等的所有行(而不是針對每個單獨的行執行不同的命令)

lsvg -l appvg | awk ' 
    $3==$4{ 
      print "Equal" 
      statement1 
      statement2 
      next    # to avoid processing the "else" statement below 
      } 

      { 
      print "Unequal" 
      statement1 
      statement2 
      }' 
0

if lsvg -l appvg | awk 'NR > 2 && $3 != $4 { exit 1 } END {exit 0}'; then 
    echo "Columns matched in each line" 
else 
    echo "Columns were different in some lines" 
fi