我有一个文本文件“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
答案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
。