0

在 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/'

我花了几个小时试图弄清楚是什么阻止了它的工作并且我是一个新用户(所以我相信这很简单,抱歉)。

我希望我足够清楚,如果需要进一步澄清,请告诉我。

4

1 回答 1

1

这是一个常见的问题。单引号保护变量免受 shell 的影响,因此它们永远不会被扩展。分配给变量时还需要命令替换s。一种方法是:

s=$(awk -F, 'FNR==r{print c}' r="$r" c="$c" file)
于 2013-03-08T13:25:45.860 回答