adsense_in_article_test


[bash: awk] 단어 위치 바꾸기 리눅스 bash script

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

예를 들어 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



핑백

덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.



통계 위젯 (화이트)

128516
2895
2275586

2019 대표이글루_IT

B-Side