이런 텍스트 파일이 있어요
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
$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에서)을 사용하여 필드를 배열로 직접 분할합니다.