我有一个像这样的文本文件
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 中)将字段直接拆分为数组。