개행으로 구분된 문자열 파일을 배열로 변환하는 방법

개행으로 구분된 문자열 파일을 배열로 변환하는 방법

다음과 같은 데이터가 포함된 파일이 있습니다.

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]}"
...
...

관련 정보