2015-03-31 72 views
1

我若與數據FILE.TXT:shell腳本里面柱分離

abcd!1023!92 
efgh!9873!xk 

並經過各行

while read line 
do 
    name = $line 
done < $1 

如何將數據分開基本tutorial.sh文件在。。之間 」!」成列並選擇第二列並添加它們? (我知道了「sed的-k 2 | BC」的功能,但我不能/不知道如何得到它與一個shell腳本工作

回答

1

您可以用awk:

awk -F '!' '{sum += $2} END{print sum}' file 
10896 
+0

會是什麼。如果我輸入文件i,我會而不是調用函數內的文件?即。 ./test.sh file.txt – 2015-03-31 10:23:06

+0

然後你可以這樣做:'awk -F'!' '{sum + = $ 2} END {print sum}'「$ 1」' – anubhava 2015-03-31 10:27:55

1

要調整while循環:

while IFS='!' read -r a b c 
do 
    ((sum += b)) 
done < "$1"     # always quote "$vars" 
echo "$sum" 

IFS是用來分割字符串成詞外殼的「內場分離」這是正常「空白」,但你可以用它爲您的特定需求