1

UNIX シェルには、次の情報を含む 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

そして、これらがファイル内の 2 行のみの場合:

$ awk '{b?b=$3-b:b=$3}END{print b}' file
15

ただし、最初のスクリプトは最も堅牢であり、さらに多くのことを行う必要がある場合は簡単に変更できます。

この結果をシェル変数に保存するには、次のようにします。

$ 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

以下は、外部プログラムを使用しない純粋なシェル ソリューションです。

#!/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 に答える