簡體   English   中英

從文本文件獲取值並在UNIX環境中進行計算

[英]Get value from a text file and do calculation in UNIX environment

在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 ))"

這是不使用任何外部程序的純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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM