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
'bash script' 카테고리의 다른 글
[bash: awk] awk에서 조건에 따라 결과를 여러 파일로 저장하기 (0) | 2024.12.26 |
---|---|
[bash: awk] awk에서 특수문자 검색하기 (1) | 2024.12.09 |
[bash:sed] 특정 개수의 문자열만 대체하기(예를 들면 처음 2개 문자열) (0) | 2024.08.05 |
[bash: awk] 특정 위치의 문자열 또는 문장(행 전체)의 길이 확인 (0) | 2024.07.31 |
[bash: date] 리눅스 date 명령으로 이메일 헤더 형식 시간 출력 (0) | 2024.05.16 |