此bash脚本代码中的后括号有什么作用?

时间:2019-06-01 15:46:33

标签: linux grep

所以我在使用bashscript时遇到问题,这个问题是:./namefreq.sh ANA应该返回两个名称的列表(在单独的行上)ANA和RENEE,这两个名称的频率均为0.120。

基本上我有一个来自table.csv的文件,显示在下面的代码中,该文件旁边有名称和频率编号,例如安娜,0.120

我仍然不确定``对这段代码有什么作用,而且我还在努力理解这段代码如何能够打印出两个具有相同频率的名称。我读代码的方式是:

grep将用户(./bashscript.sh Anna)输入的单词(-w)与(a)的值进行比较,然后使用cut命令比较行之间的第二个字段,以分隔符“,”是文件​​table.csv中的频率,然后| cut -f1 -d“,”打印出第一个字段,它们是具有相同频率的名称

^这是正确的吗?

谢谢:)

#!/bin/bash
a=`grep -w $1 table.csv  | cut -f2 -d','`
grep -w $a  table.csv | cut -f1 -d',' | sort -d

1 个答案:

答案 0 :(得分:-1)

当命令位于反引号或$()中时,命令的输出将代替命令代入命令中。因此,如果文件具有Anna,0.120

a=`grep -w Anna table.csv  | cut -f2 -d','`

将执行grepcut命令,它们将输出0.120,因此等效于

a=0.120

然后,该命令查找与0.120匹配的所有行,并以cut提取第一个字段,并对它们进行排序。