在linux中,我试图从CSV文件的特定列和行中选择一个变量,然后将此变量用作文件位置层次结构的末尾。当我在bash终端窗口中键入以下内容时,似乎可以通过在屏幕上输出正确的行和列中的变量来工作。
awk -F "," 'FNR == 2 {print $8}' /sdata/images/projects/ASD_SSD/1/ruths_data/ruth/imaging\ study/imaging\ study\ working/delete2.csv
但是,我试图在脚本中进行以下替换,这无法正常工作......
r=2
c=8
s=awk -F "," 'FNR == $r {print $c}' /sdata/images/projects/ASD_SSD/1/ruths_data/ruth/imaging\ study/imaging\ study\ working/delete2.csv
然后我尝试将s输出用作层次结构文件位置的末尾。例如,/ home / ork / js / s *
我一直收到以下错误,因此看起来它没有创建s
变量,而是没有将其插入到实际的文件位置。
省略目录`/ home / ork / js /'
我花了几个小时试图弄清楚是什么阻止了这个工作,并且是一个新用户(所以我确信它很简单,对不起)。
我希望我很清楚,如果需要进一步澄清,请告诉我。
答案 0 :(得分:1)
这是一个常见问题。单引号保护shell中的变量,因此它们永远不会被扩展。分配给变量s
时也需要命令替换。一种方法是:
s=$(awk -F, 'FNR==r{print c}' r="$r" c="$c" file)