bash script2023. 7. 20. 08:53

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/590787

텍스트 파일을 한줄씩 읽어서 순차적으로 작업을 해야 할 경우, while과 read 명령을 조합하고 I/O 리다이렉션(redirection)으로 파일을 열어 주면 된다. 예시를 보면 금방 감을 잡을 수 있을 것이다.

예를 들어 my_data.txt 파일을 한줄씩 읽어서 행번호와 함께 출력하는 경우를 생각해 보자. 아래와 같은 형태가 될 것이다.

# 행번호 초기값 설정
line_num=1
# 파일에 대한 작업
while read -r rline
do
  # 행번호와 read 명령으로 읽은 행 출력
  echo "$line_num : $rline"
  # 행번호 1 증가
  ((line_num++))
done < my_data.txt

행번호는 변수 line_num에, 파일로 부터 읽어들인 행은 변수 rline에 할당된다. while 명령의 마지막 부분에 처리하고자 하는 텍스트 파일(my_data.txt)을 리다이렉션해서 보냈다.

read 명령에서 유의해야 할 것은 -r 옵션이다. 텍스트 파일에 별표(*), 역슬래시(\) 등 shell에서 사용하는 특수 기호가 포함되어 있을 경우에 대비해서 이런 부분을 처리하지 말고 그냥 문자열로만 해석하도록 추가하는 옵션이므로 잊지 말고 적용하자.

 

728x90
Posted by 반달가면