修复 shell 脚本中的斜杠

修复 shell 脚本中的斜杠

我有一个像这样的文本文件

REP1.bam    ./CONTROL/CONTROL.bam

这是一个制表符分隔的文件。我想在制表符/空格上分割行并将各个列存储为单独的数组元素。

我做了这样的事情

while read -r line; do arr=(${line{///}); echo ${arr[1]}; done < test.txt

这给了我 .CONTROLCONTROL.bam 并且不保留斜杠。

我怎样才能解决这个问题。

答案1

我想你的意思是${line///}代替$line{///}.这确实会给您带来好处,.CONTROLCONTROL.bam因为您明确要求 shell 将斜杠替换为空...($line{///}只是变量的值,并{///}附加了文字。)

我不太确定你为什么要这样做。要获取两个不同变量中的两列,您所需要做的就是使用read -r var1 var2.然后你可以将它们存储到数组中,或者直接使用它们

$ while read -r foo path; do arr=("$foo" "$path"); echo "${arr[1]}"; done < test.txt
./CONTROL/CONTROL.bam

或者使用read -ra arr(在 Bash 中)将字段直接拆分为数组。

相关内容