如何从文件中提取值(在特定行和列中)并将其分配给新变量

如何从文件中提取值(在特定行和列中)并将其分配给新变量

我有一个文本文件“a.txt”,它是一个3X4矩阵,结构如下:

1 apple 50 Mary
2 banana 40 Lily
5 orange 34 Jack

我想提取值“40”(第 2 行,第 3 列)并将其分配给一个名为“price”的新变量。

我试过这个:

awk 'NR == 2 {print $3}' a.txt > price
echo "$price"

但为什么结果是:

0

我怎么解决这个问题?谢谢。

答案1

要将命令的输出存储在变量中,请使用:

variable=$( commandFooBar )

查看这里

答案2

您混淆了两个不同的 shell 操作符。

重定向>会将输出重定向到文件。因此,为了让您的示例正常工作,您可以使用:

awk 'NR == 2 {print $3}' a.txt > price
cat price   # display contents of file named price

$的是一个变量,因此要echo打印出该变量,您首先必须从前一个的输出中设置它。就像这样:

price=$(awk 'NR == 2 {print $3}' a.txt)
echo "$price"

答案3

该值不存储在变量中,而是存储在名为“price”的文件中。因此 echo 将不会显示值。尝试vim price

相关内容