![개행으로 구분된 문자열 파일을 배열로 변환하는 방법](https://linux55.com/image/159647/%EA%B0%9C%ED%96%89%EC%9C%BC%EB%A1%9C%20%EA%B5%AC%EB%B6%84%EB%90%9C%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%B0%B0%EC%97%B4%EB%A1%9C%20%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
다음과 같은 데이터가 포함된 파일이 있습니다.
UserName
UserName
UserName
각 데이터 조각은 개행 문자로 구분됩니다.
이 데이터를 문자열 배열로 변환하여 변수에 저장해야 합니다.
bash 또는 쉘 실행을 통해 이를 어떻게 달성할 수 있습니까?
답변1
그리고 mapfile
:
$ mapfile -t array < yourfile
$ declare -p array # print array content
declare -a array=([0]="UserName" [1]="UserName" [2]="UserName")
답변2
$ set -f # disable globbing
$ arr=($(<file.csv))
$ set +f # enable globbing
$ declare -p arr # print array content
declare -a arr=([0]="UserName" [1]="UserName" [2]="UserName")
arr=(…)
배열 생성$(<file.csv)
파일 읽기file.csv
(예$(cat file.csv)
: )
*
파일을 읽기 전에 와일드카드를 비활성화하여 또는 또는 특수 패턴과 같은 문자로 인한 사용자 이름 확장 ?
(경로 이름 확장) 을 방지해야 합니다.
요소는 개행, 공백 또는 탭( $IFS
수정되지 않은 것으로 가정)에서 분할되고 잘립니다.
답변3
i=0
while IFS= read -r line
do
var[i++]="$line"
done < filename
여기서 var 배열 변수는 모든 이름을 저장합니다. 다음을 통해 액세스할 수 있습니다.
printf '%s\n' "${var[0]}"
printf '%s\n' "${var[1]}"
...
...