본문 바로가기
Linux_Shell

[쉘프로그래밍] 파일 한줄한줄 읽어와 반복구에 넣기

by heybrro 2017. 8. 17.
리눅스에서는 파일을 한줄 한줄 읽어온 후 처리하는 방법이 여러가지 있다.

보통 awk 를 사용하면 파일의 한 줄 한 줄에 대해 간단한 검색, 문자열 처리 등을 할 수 있다. 그러나 좀 더 복잡한 작업을 처리하고 싶은 경우는 어떻게 해야할까?

만약 파일을 한줄씩 읽어와 반복문으로 처리하며 쉘 명령어를 수행하고 싶은 경우는 awk보다 더 적절한 방법이 있다. 아래와 같은 read 명령어를 쓰는 것이다. 

<사용방법>
#!/bin/bash

while  read line       <--- line 이라는 변수에 한 줄을 담는다. 

do 

echo $line 

done < $1          <--- 반복구가 읽어들일 input 파일은  $1 (즉, 첫번째 파라메터)로 들어온 파일명이라는 의미

* read는 column 단위로 나뉘어 있는 줄들도 잘 읽을 수 있다.


<예> 
예를 들어 'test.txt'라는 파일 내용이 다음과 같다면

CHSui-iMac:~ CHS$ cat test.txt 


a A 1 aaa AAA 111 

b B 2 bbb BBB 222 


------------------------------------------------


쉘코드가 다음과 같이 짜여진 경우


CHSui-iMac:~ CHS$ cat te.sh 


#!/bin/bash

while read A B C ETC 

do 

echo "${A}-${B}-${C}-${ETC}" 

done < test.txt 


------------------------------------------------


실행하면 다음과 같은 결과가 나옵니다.


YOONHUOJINui-iMac:~ YHJ$ ./te.sh 

a-A-1-aaa AAA 111

b-B-2-bbb BBB 222

------------------------------------------------







댓글