쉘 스크립트의 슬래시 수정

쉘 스크립트의 슬래시 수정

이런 텍스트 파일이 있어요

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에서)을 사용하여 필드를 배열로 직접 분할합니다.

관련 정보