2014-03-01 50 views
1

我遇到了如何做某事的問題。我需要按逗號分隔字段的順序輸出幾個管道腳本。最後,我需要讓awk在第7個字段中獲取數據,找到超過31的值並將其打印出來。這是我到目前爲止有:bash shell字段需要大於#

#!/bin/bash 

selection='31' 

if [ ! $# -lt 1 ]; then 
selection=$1 
fi 


while read y; do 

hwy=$(echo $y | awk -F':' '{print $7 }') 

if [ "$hwy" -g "$selection" ]; then 
    echo $y 
fi 
done 

我寫了這個,所以你可以運行該腳本,如果你想改變#到另一個#。

在從解析的數據文件中檢索到此信息後,我需要打印出一個我輸入的標題(簡單回顯命令),在輸出的空行後面打印20行數據後的標題(don不知道該怎麼做),然後在輸出的最後一行輸出處理過的記錄數(簡單的wc -l)。

我需要做些什麼才能從$ 7字段解析大於31的字符?如何在打印另一個標題之前每20行使用空行來完成標題?

echo Year  Make  Model Cylinders  Engine Displacement City Hwy 

和上面的報告。如果有更多的產量。它會把一個新的標題。

我該怎麼做?

+0

如何在輸出中爲每20行添加一個標題爲空行? – user3030048

回答

1

你可能想-gt而不是-g

if [ "$hwy" -gt "$selection" ]; then 
      ^
0

如果字段用逗號分隔,你應該告訴awk使用逗號作爲分隔符。

你可以做整個事情只有awk並沒有在一個循環笨拙echo命令:

selection=${1:-31} 
awk -F, -v selection=$selection '{ if ($7 > selection) print $7 }' 

除了一些家當線(#!/bin/sh或類似),這一切都需要。 ${1:-31}表示法是shell parameter expansion的示例。