내 file.txt에는 다음 내용이 포함되어 있습니다.
./raw_input/0009/img.raw,./raw_input/0009/calib.raw
답변1
만약 당신의ksh
예 ksh93
또는 다음을 mksh
사용하여 첫 번째 줄을 배열로 읽을 수 있습니다.
IFS=, read -rA array < file.txt
zsh
또는 에도 적용됩니다 yash
. 어떤 이유에서인지 bash
몇 년 후 이 -a
대신 사용하기로 결정했습니다 -A
.
-S
ksh93은 CSV 구문 분석 (여러 줄에 걸쳐 따옴표 및 값 처리) 도 수행할 수 있습니다 .
IFS=, read -rSA array < file.txt
예를 들어 다음을 포함합니다 file.txt
.
"foo bar",,"blah""blah
blah"
이는 다음을 제공합니다:
$ typeset -p array
typeset -a array=('foo bar' '' $'blah"blah\nblah')
나뉘다전체 파일쉼표에서는 분할+glob(따옴표가 없는 경우 암시적으로 수행됨 $(<file)
)을 사용하고 glob을 비활성화할 수 있습니다.
set -o noglob
IFS=,
array=( $(<file.txt) )
또는 ksh88/pdksh와의 호환성을 위해:
set -o noglob
IFS=,
set -A array -- $(<file.txt)
후행 $(<...)
개행 문자도 제거됩니다.
또한 파일이 a로 끝나는 경우 ( 위의 경우 ,
에도 적용됨 , , Except 포함 ) 추가로 후행 빈 요소가 생성되지 않습니다( 이는 다음과 같이 처리됩니다).read
-S
zsh
,
구분 기호, 아니요분할기, 제안된 S
내용에도 불구하고 $IFS
).