bash script2024. 11. 23. 13:57

awk에서 작업을 할 때 결과에 파일명을 함께 출력할 수 있다. 예를 들어 다수의 파일이 있는데 파일 내용중에 "abc"가 포함되어 있는 파일이 어느 것인지 찾아야 하는 경우다.

awk에서 파일명은 FILENAME이라는 변수에 저장된다. 따라서 아래와 같은 예시를 만들어 볼 수 있다. txt 파일을 모두 읽어서 만약 문자열 "abc"가 포함되어 있으면 파일명을 출력하는 경우다. 일단 "abc"가 발견되었으면 마지막 행까지 굳이 다 읽을 필요는 없으므로, 파일명을 출력하고 nextfile 명령으로 다음 파일로 넘어간다.

awk '{ if ($0 ~ /abc/) {print FILENAME ":" $0; nextfile} }' *.txt

만약 찾고자 하는 문자열을 변수로 지정하고 싶다면 -v 옵션을 이용하자. 관련 내용은 여기에

my_str="abc"
awk -v str_pattern="$my_str" '{ if ($0 ~ str_pattern) {print FILENAME ":" $0; nextfile} }' *.txt

 

 

 

728x90
Posted by 반달가면