在unix shell中,我有一个包含以下信息的txt文件(Price.txt):
Buy value: 15
Sell value: 30
我可以知道如何使用可以grep买入值和卖出价值(以整数表示)的命令,然后在它们之间做差异,存储在一个新变量中吗?
答案 0 :(得分:4)
这是一个简单的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
答案 1 :(得分:1)
一种非常基本的方式是:
buy=$(tail -1 YOUR_FILE | cut -d: -f2)
sell=$(head -1 YOUR_FILE | cut -d: -f2)
echo "the result is $(( $sell - $buy ))"
答案 2 :(得分:0)
这是一个不使用任何外部程序的纯shell解决方案:
#!/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"