SUBSTR

포스트: 3
Tags

Posts

3 posts

[bash: awk] 다수의 문자열을 검색하여 일치하는 부분만 출력하기(match, substr)

반달가면|2018년 12월 27일

우선, awk에서 match 함수와 substr 함수를 활용해서 특정 문자열 패턴을 검색하고 일치하는 부분만 출력하는 방법은 이전 게시물을 참고하자. 여기로. 일단 기본적인 예시는 아래와 같다. 행 전체($0)에서 문자열 "abc"가 있으면 일치하는 부분만 출력한다. echo "abcdefg" | awk 'match($0,/abc/) { print substr($0,RSTART,RLENGTH) }' abc 여기서는 입력에 대해 검색하고자 하는 문자열 패턴이 여러개일 경우를 생각해 보려고 한다. 예를 들어 탭(tab)을 항목 구분자(field separator)로 사용하는 입력에서 두번째 항목($2)에 문자열 "abc"가 있는지 확인하고 세번째 항목($3)에 3개의 연속된 수자(정규표현식

[bash: awk] 문자열을 검색해서 일치하는 부분만 출력하기(match, substr)

반달가면|2018년 11월 13일

awk에서 특정 문자열 패턴과 일치하는 부분이 있을 경우, 일치하는 부분만 출력하는 방법이다. grep에서 -o 옵션으로 일치하는 부분만 골라서 출력하는 것과 동일한 기능이나(grep의 -o 옵션에 대한 내용은 이전 게시물을 참고하자. 여기로), awk에서는 좀 더 복잡한 작업들과 조합해서 사용할 수 있으므로 알아두면 편리하다. 아래의 예시를 보자. 입력된 행에 문자열 "abc"가 있는지 확인하여 있을 경우 해당 부분만 출력하는 경우다. echo "abcdefg" | awk 'match($0,/abc/) { print substr($0,RSTART,RLENGTH) }' abc match 함수를 이용하여 일치하는 부분이 있는지 확인한 후에 문자열 일부를 출력하기 위해 substr 함수를 사용

[bash: awk] 특정 위치(field)의 문자열에서 특정 길이 만큼 문자열 추출

반달가면|2016년 12월 16일

awk에서도 expr의 substr 옵션과 같은 기능을 하는 함수가 존재한다. 이름도 substr로 같다. (expr의 substr 옵션에 대한 내용은 이전 게시물을 참고하자. 여기로) substr 함수의 형식은 아래와 같다. 아래의 형식에서 문자열이 들어갈 자리에 $1, $2 등 위치(field) 변수를 지정해 주면 된다. substr("문자열",[시작 위치],[길이]) 간단한 예시를 보자. 문자열 "I'm a student"에서 세번째 단어(student)의 2번째 바이트부터 4바이트를 추출하고자 한다면 아래와 같이 될 것이다. substr 함수를 이용해서 3번째 단어의 2번째 바이트부터 4바이트를 추출하여 변수 result에 저장하고 print 명령으로 출력. echo "I'm a