검색

포스트: 36
Tags

Posts

36 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개의 연속된 수자(정규표현식

locate - mlocate 데이터베이스 정보 확인 및 수동 갱신

반달가면|2018년 12월 5일

파일을 빠르게 찾기 위한 locate 명령에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로 기본적인 사용 예시는 아래와 같다. # 디렉토리 경로 또는 파일명에 문자열 "abc"를 포함한 경우 찾기 locate "abc" # 파일명(basename)에 문자열 "abc"를 포함한 경우 찾기 locate -b "abc" # 정규표현식 사용, 문자열 "Abc" 또는 "abc"를 포함한 경우 찾기 locate --regex "[Aa]bc" locate에서 참조하는 데이터베이스(mlocate DB) 관련 정보를 확인하려면 -S(대문자) 옵션을 이용한다. # mlocate DB 정보 출력 locate -S Database /var/lib/mlocate/mlocate.d

locate - 리눅스에서 고속으로 파일 찾기

반달가면|2018년 12월 3일

파일을 검색할 때 개인적으로 가장 요긴하게 사용하는 명령어가 find인데, 파일 수가 엄청나게 많은 상황에서 특정 파일의 위치를 확인하려면 시간이 꽤 걸릴 수 있다. 이럴 경우 locate를 사용하면 훨씬 빠르게 결과를 얻을 수 있다. 파일 시스템을 직접 검색하는 find와 달리, locate는 파일 정보가 저장되어 있는 데이터베이스(DB)를 검색해서 결과를 출력하기 때문에 속도가 훨씬 빠르다. 검색 조건과 관련된 옵션에 있어서는 find가 훨씬 유연하고 다양하므로 필요에 따라 두가지 명령을 상호보완적으로 사용하면 되겠다. (find 활용은 이전 게시물들을 참고하자. 여기로) 가장 간단한 예로, 파일시스템 어딘가에 my_file.txt 파일이 어디에 있는지 보려면 아래와 같이 입력하면 된다.

[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 함수를 사용