在UNIX shell中,我有一個txt文件(Price.txt)包含以下信息:獲得價值,做計算
Buy value: 15
Sell value: 30
我可以知道如何使用的命令可以grep購買價值和銷售價值(整數),然後做他們之間的差異,存儲在一個新的變量?
在UNIX shell中,我有一個txt文件(Price.txt)包含以下信息:獲得價值,做計算
Buy value: 15
Sell value: 30
我可以知道如何使用的命令可以grep購買價值和銷售價值(整數),然後做他們之間的差異,存儲在一個新的變量?
下面是一個簡單的腳本awk
將打印相比,買了價值(並不重要至上文件中)出售價值之間的差額:
$ awk '/Buy value/{b=$3}/Sell value/{s=$3}END{print s-b}' file
15
或者,如果你知道Buy value
始終是第一位的,你可以是一個小更簡潔:
$ awk '/Buy value/{b=$3}/Sell value/{print $3-b}' file
15
如果這些是僅有的兩個文件中的行:
$ awk '{b?b=$3-b:b=$3}END{print b}' file
15
但第一個腳本是最強大和最容易修改,如果你需要做的更多。
這一結果存儲在一個shell變量簡單做:
$ diff=$(awk '/Buy value/{b=$3}/Sell value/{s=$3}END{print s-b}' file)
$ echo $diff
15
一個非常基本的方法是:
buy=$(tail -1 YOUR_FILE | cut -d: -f2)
sell=$(head -1 YOUR_FILE | cut -d: -f2)
echo "the result is $(($sell - $buy))"
感謝沒有評論downvoting! – fedorqui 2013-03-28 09:16:48
我喜歡編輯@sudo_O,但我更喜歡在評論中提示它,而不是編輯我的答案。 – fedorqui 2013-03-28 09:26:50
我發現評論混亂..我發佈''你應該放棄UUoC''作爲評論,你修復你的答案並留下另一個評論,同樣的結果發生,但與減少答案的unessercery評論。 F.Y.I *你的*答案不是你的答案,現在屬於社區。如果我看到有可以改進的地方,我會做到的。查看官方詞彙http://stackoverflow.com/faq#editing的常見問題解答 – 2013-03-28 09:30:29
這裏是不使用任何外部程序的純殼溶液:
#!/bin/bash
diff=0
while read bs value amount
do
if [[ $bs == Buy ]]
then
diff=$((diff - amount))
elif [[ $bs == Sell ]]
then
diff=$((diff + amount))
else
echo "$bs ignored!" >&2
fi
done < Price.txt
echo "Difference: $diff"
感謝您的幫助! 我可以知道「$ 3」的含義是什麼? 還有一個問題: 如果在「購買價值」之前有一個時間戳,該怎麼辦? 即 130324_102345購買價值:15 130325_102412賣出價值:30 – yamcake01096 2013-03-29 02:03:46