awk의 태그된 출력에 텍스트 추가

awk의 태그된 출력에 텍스트 추가

파일 이름이 필요한 기능이 있습니다. 그런 다음 명령을 실행하고 두 패턴(제외) 사이의 출력을 필터링한 다음 명령의 파일 이름 출력과 함께 쉼표로 구분된 값을 출력합니다.

함수와 예상 출력은 다음과 같습니다.

get_cons_obs() {
    local line="${1}"
    "command" -i "${line}" 2>&1 \
        | awk '/^ERROR$/{print "ERROR"} /^START$/{flag=1;next} /^END$/{flag=0} flag' \
        | xargs printf "${line},%s\n"
}
file01,thing01
file01,thing02
file01,thing03
.
.
.

awk명령과 명령을 xargs printf결합 할 수 있나요 ? $line변수에 "마크" 줄을 추가 할 수 없는 것 같습니다 .

답변1

0이 아닐 때 인쇄할 수 line있도록 쉘 변수를 awk에 전달하려는 것 같습니다.flag

전임자.

awk -v line="$line" '. . . flag {printf "%s,%s\n", line, $0}'

당신은 또한 볼 수 있습니다

답변2

다음 명령을 사용해보십시오. 훌륭하게 작동합니다.

awk '/pattern1/,/pattern2/{print $0","FILENAME}' filename

관련 정보