bash script2020. 11. 3. 16:49

 

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

 

그냥 예제를 하나 적어두는 것이 가장 나을 것 같다.

 

예를 들어 people.txt 파일의 내용이 아래와 같이 이름::이메일::나이 형태라고 해 보자.

 

john::john@mail.com::24

mary::mary@mail.com::22

 

이것을 이메일[탭]이름[탭]나이 형태로 바꿔서 result.txt 파일에 저장하려고 한다. 아래와 같이 하면 되겠다.

 

cat people.txt | awk -v FS="::" -v OFS="\t" '{ print $2,$1,$3 }' > result.txt

 

-v 옵션으로 awk의 내부 변수를 설정해 주는데, FS는 입력에 적용하는 항목 구분자(field separator)이고 OFS는 출력에 적용하는 항목 구분자이다.

 

FS에 지정된 구분자를 기준으로 첫번째 항목은 $1에, 두번째 항목은 $2에 대응된다. 위의 예시를 기준으로 보면 $1은 이름, $2는 이메일에 대응될 것이다.

 

이름과 이메일의 순서를 바꿔야 하므로 print 명령에서 순서를 $2,$1,$3 이렇게 했다. 그리고 이 결과를 result.txt로 저장.

 

result.txt의 내용은 아래와 같이 될 것이다.

 

john@mail.com john 24 mary@mail.com mary 22

 

 

728x90
Posted by 반달가면