반달가면 이글루에서 백업 - 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
'bash script' 카테고리의 다른 글
[bash: awk] awk에서 외부 명령을 실행하고 결과를 변수에 저장하기 (0) | 2023.07.20 |
---|---|
[bash: awk] 특정 위치(field)의 문자열에서 특정 길이 만큼 문자열 추출 (substr) (0) | 2023.07.20 |
[bash: grep] 두개의 파일에서 공통으로 출현하는 문자열 찾기 (0) | 2023.07.19 |
[bash: awk] 작업 시작전, 완료후에 실행할 명령어 지정(BEGIN/END) (0) | 2023.07.19 |
[bash: awk] 조건에 따른 문자열 작업 (0) | 2023.07.19 |