리눅스에서는 파일을 한줄 한줄 읽어온 후 처리하는 방법이 여러가지 있다.
보통 awk 를 사용하면 파일의 한 줄 한 줄에 대해 간단한 검색, 문자열 처리 등을 할 수 있다. 그러나 좀 더 복잡한 작업을 처리하고 싶은 경우는 어떻게 해야할까?
만약 파일을 한줄씩 읽어와 반복문으로 처리하며 쉘 명령어를 수행하고 싶은 경우는 awk보다 더 적절한 방법이 있다. 아래와 같은 read 명령어를 쓰는 것이다.
<사용방법>
#!/bin/bashwhile 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
------------------------------------------------
'Linux_Shell' 카테고리의 다른 글
[쉘프로그래밍] 파일을 라인수에 따라 나눠보자 (0) | 2017.08.21 |
---|---|
[쉘프로그래밍] 스트링 앞뒤 공백만 제거 (0) | 2017.08.18 |
[쉘프로그래밍] Bash Shell Programming (0) | 2017.08.10 |
[쉘프로그래밍] 배열, 정규표현식, grep (0) | 2017.08.10 |
[쉘프로그래밍] 리눅스 부팅과정, 기본적인 명령어 (0) | 2017.08.10 |
댓글