adsense_in_article_test


[bash: awk] 조건에 따른 문자열 작업 리눅스 bash script

awk 구문의 가장 기본적인 형태는 아래와 같다.

awk '/패턴/ {명령어}' 파일명
 
텍스트 파일을 한 행씩 읽으면서 일치하는 패턴(문자열)이 보이면 이에 상응하는 명령어를 실행한다. 예를 들어 my_file.txt 파일에서 "abc" 문자열이 있으면 행 전체($0)를 출력하고 "def" 문자열이 있으면 "___" 문자열을 출력한다면 아래와 같이 될 것이다.

awk '/abc/ { print $0 }
     /def/ { print "___" }' my_file.txt


위의 예시에서 만약 한 행에 "abc"와 "def"가 둘 다 있다면 행 전체도 출력되고 "___" 문자열도 출력된다.

if/else 조건문을 사용해서 조건에 따라 출력을 지정해 줄 수 있다. 예를 들어 my_file.txt 파일에서 현재 행에 "123" 문자열이 있는 경우에는 행 전체($0)를 출력하고 그렇지 않은 경우엔 첫번째 필드($1)만 출력해야 하는 경우라면 아래와 같이 될 것이다.

awk '{
  if (/123/) { print $0 }
  else { print $1 }
  }' my_file.txt


두번째 필드에 "123" 문자열이 있는 경우에만 행 전체를 출력하고 그렇지 않은 경우에 첫번째 필드만 출력한다면 아래와 같이 될 것이다. (특정 필드에 대한 검색을 다룬 이전 게시물에서 else만 추가된 모양새)

awk '{
  if ($2=="123") { print $0 }
  else { print $1 }
  }' my_file.txt


위의 예시에서 AND/OR 조건도 가능하다. 두번째 필드에 "123" 문자열이 있으면서(AND) 세번째 필드에 "456" 문자열이 있어야 하는 경우라면 아래와 같이 된다.

awk '{
  if ($2=="123" && $3=="456") { print $0 }
  else { print $1 }
  }' my_file.txt

 
AND 연산은 "&&", OR 연산은 "||" 문자열을 사용한다.

awk 활용에 대한 다른 게시물들은 여기로



핑백

  • 반달가면 : [bash: awk] 출력할 내용을 조건에 따라 여러 파일로 나누어 저장하기 2017-01-03 22:32:15 #

    ... l 명령과 동일하다. 조건에 따라 파일명을 바꾸고 싶다면, awk에서 if 조건문을 사용하면 되겠다. 조건을 적용한 awk 작업에 대한 내용은 이전 게시물을 참고하자. 여기로 가격이 500원 이상인 항목은 ge500.txt 파일에, 500원 미만인 항목은 lt500.txt 파일에 저장하고 싶다면 아래와 같이 될 것이다. # 500원 ... more

  • 반달가면 : [bash: awk] 특정 필드(field)의 값이 있는 경우, 또는 없는 경우 판별하기 2018-06-18 21:36:01 #

    ... 즉 특정한 필드 값의 유무에 따라 선별을 해야 할 경우에 awk를 활용할 수 있다. (우선 awk에서 조건에 따른 작업에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로) 예를 들어 이름, 전화번호, 이메일을 저장한 파일에서 전화번호가 없는 사람만 골라서 출력한다거나 아니면 이메딜 주소가 있는 사람만 출력하는 경우다. 각 항목을 ... more

덧글

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



통계 위젯 (화이트)

419174
3008
2317236

2019 대표이글루_IT

B-Side