从文本文件中获取值并在 UNIX 环境中进行计算

yam*_*096 1 unix linux bash shell awk

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

Buy value: 15
Sell value: 30
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*our 5

这是一个简单的awk脚本,它将打印出售价值与购买价值之间的差异(无论文件中哪一个先出现)

$ awk '/Buy value/{b=$3}/Sell value/{s=$3}END{print s-b}' file
15
Run Code Online (Sandbox Code Playgroud)

或者,如果您知道Buy value永远是第一位的,您可以更简洁一点:

$ awk '/Buy value/{b=$3}/Sell value/{print $3-b}' file
15
Run Code Online (Sandbox Code Playgroud)

如果文件中只有这两行:

$ awk '{b?b=$3-b:b=$3}END{print b}' file
15
Run Code Online (Sandbox Code Playgroud)

但如果您需要做更多事情,第一个脚本是最强大且易于修改的。

要将结果存储在 shell 变量中,只需执行以下操作:

$ diff=$(awk '/Buy value/{b=$3}/Sell value/{s=$3}END{print s-b}' file)

$ echo $diff
15
Run Code Online (Sandbox Code Playgroud)