Bash를 사용하여 한 줄씩 파일을 읽는 방법
Suraj Joshi
2020년10월2일
Bash에서는 파일에 저장된 데이터를 한 줄씩 처리해야하는 여러 상황에 직면 할 수 있습니다. 이 경우 파일의 내용을 읽어야합니다. Bash에서read
명령을 사용하여 한 줄씩 파일을 읽습니다.
Bash에서 한 줄씩 파일 읽기
통사론
while IFS= read -r line
do
echo "$line"
done < file_name
file_name
파일의 내용을 한 번에 한 줄씩 읽고 터미널에 한 줄씩 인쇄합니다. 루프는 파일의 끝에 도달 할 때까지 실행됩니다. IFS
는 선행 및 후행 공백을 유지하는 데 도움이되는 널 문자열로 설정됩니다.
또는 위의 명령을 한 줄에서 다음 명령으로 바꿀 수도 있습니다.
while IFS= read -r line; do echo $line; done < file_name
예: Bash에서 한 줄씩 파일 읽기
이 예에서는 각 줄에 숫자가 포함 된 file.txt
파일을 읽고 파일에있는 모든 숫자의 합계를 찾습니다.
file.txt
의 내용
1
5
6
7
8
10
#!/bin/bash
sum=0
echo "The numbers in the file are:"
while IFS= read -r line
do
echo "$line"
sum=$(( $sum + $line ))
done < file.txt
echo "The sum of the numbers in the file is:$sum"
출력:
The numbers in the file are:
1
5
6
7
8
The sum of the numbers in the file is:27
file.txt
라는 파일에서 한 줄씩 숫자를 읽은 다음 모든 숫자를 합산하고 마지막으로 그 합을 에코합니다.
예: 파일의 필드를 변수로 설정
여러 변수를read
명령에 전달하여 파일의 필드를 변수로 설정할 수 있습니다.read
명령은 IFS
값을 기준으로 한 행 내에서 필드를 구분합니다.
file.txt
의 내용
Rohit-10
Harish-30
Manish-50
Kapil-10
Anish-20
#!/bin/bash
while IFS=- read -r name earnings
do
echo "$name" has made earnings of "$earnings" pounds today!
done < file.txt
출력:
Rohit has made earnings of 10 pounds today!
Harish has made earnings of 30 pounds today!
Manish has made earnings of 50 pounds today!
Kapil has made earnings of 10 pounds today!
여기서는 두 개의 변수를read
명령에 전달했기 때문에 파일의 각 줄이 두 개의 세그먼트로 나뉩니다. 첫 번째 세그먼트는 줄의 시작 부분에서 첫 번째 -
까지 확장되는 name
변수에 할당되고 나머지 부분은 earnings
변수에 할당됩니다.
Bash에서 파일을 읽는 다른 방법
#!/bin/bash
while IFS=- read -r name earnings
do
echo "$name" has made earnings of "$earnings" pounds today!
done < <(cat file.txt )
출력:
Rohit has made earnings of 10 pounds today!
Harish has made earnings of 30 pounds today!
Manish has made earnings of 50 pounds today!
Kapil has made earnings of 10 pounds today!
여기서 파일명file.txt
는cat
명령의 출력으로 프로그램에 전달됩니다.
작가: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn