awk에서 변수 설정

awk에서 변수 설정

파일 이름이 포함된 세 개의 문자열을 추가하는 것으로 구성된 변수를 awk에 설정하고 싶습니다. 이 명령은 anumber 와 사이의 줄을 인쇄해야 합니다 b.

  find "$dir" \( -name \*.org -o -name \*.texi \)  \
    -exec awk -v a="$na" -v b="$nb"                \
              -v red="$(tput setaf 1)"             \
              -v nrm="$(tput sgr0)"                \
              -v rd="\033[1;31m"                   \
              -v nr="\033[0m"                      \
           's = "==>" FILENAME "<=="
            FNR == 1 {f = 0}
            FNR == a {print red, s, nrm; f = 1}
            f {print; if (FNR == b) nextfile}' {} +

답변1

s = ...awk 구문의 조건부 부분이 있습니다 condition {action}. 다음과 같은 조치를 취해야 할 것 같습니다 FNR == 1 { ... }.

  find "$dir" \( -name \*.org -o -name \*.texi \)  \
    -exec awk -v a="$na" -v b="$nb"                \
              -v red="$(tput setaf 1)"             \
              -v nrm="$(tput sgr0)"                \
           '
            FNR == 1 {s = "==>" FILENAME "<=="; f = 0}
            FNR == a {print red, s, nrm; f = 1}
            f {print; if (FNR == b) nextfile}' {} +

관련 정보