1

在 unix shell 中,我有一个包含以下信息的 txt 文件(Price.txt):

Buy value: 15
Sell value: 30

我可以知道如何使用可以grep买入价值和卖出价值(整数)的命令,然后在它们之间做差异,存储在一个新变量中吗?

4

3 回答 3

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
于 2013-03-28T09:12:44.760 回答
1

一个非常基本的方法是:

buy=$(tail -1 YOUR_FILE | cut -d: -f2)
sell=$(head -1 YOUR_FILE | cut -d: -f2)
echo "the result is $(( $sell - $buy ))"
于 2013-03-28T09:12:03.510 回答
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"
于 2013-03-28T11:16:08.377 回答