[Shell Script] 파일 한줄씩 읽기
March 01, 2024
Shell script에서 텍스트(txt) 파일을 한 줄씩 읽는 방법에 대해서 알아보겠습니다.
이 글의 예제들은 Ubuntu 20.04에서 Bash shell을 사용하여 작성되었습니다.
1. read로 파일 한 줄씩 읽기
텍스트 파일
예제로 사용될 sample.txt
라는 파일의 내용은 다음과 같습니다.
first
second
third
fourth
fifth
파일 한 줄씩 읽기
그리고, read를 사용하여 아래와 같이 한 줄씩 텍스트를 읽을 수 있습니다.
echo "Line $i: $line"
: i는 라인 숫자 의미, line은 텍스트 한줄while read line
: 파일에서 한줄을 읽어 line에 저장[ -n "$line" ]
: -n 옵션은 문자열이 비어있지 않은 경우에 true 리턴, 즉, EOF(End Of File)에 도달했을 때는 while문을 종료하는 목적done < "$file"
: 파일을 가져와서 while문에서 사용하겠다는 의미
file="sample.txt"
i=1
while read line || [ -n "$line" ] ; do
echo "Line $i: $line"
((i+=1))
done < "$file"
Output:
$ bash example.sh
2. 전체 텍스트를 하나의 문자열에 할당
cat
을 사용하여 파일의 모든 텍스트를 하나의 문자열로 만들 수 있습니다.
아래 예제는 sample.txt
의 모든 텍스트(개행 문자를 포함한)를 value에 할당합니다.
#!/bin/bash
value=`cat sample.txt`
echo "$value"
Output:
$ bash example.sh
first
second
third
fourth
fifth
아래와 같이 value=$(<sample.txt)
를 사용하여 모든 텍스트를 하나의 문자열에 할당할 수도 있습니다.
#!/bin/bash
value=$(<sample.txt)
echo "$value"
Output:
$ bash example.sh
first
second
third
fourth
fifth