마지막 항목을 문자열로 바꾸는 방법

마지막 항목을 문자열로 바꾸는 방법

정규식과 대체 문자열이 주어지면 awk를 사용하여 다음을 달성하려면 어떻게 해야 합니까?

  • 행에 일치하는 항목이 없으면 아무 작업도 수행되지 않습니다.
  • 한 줄에 일치하는 항목이 여러 개 포함된 경우 마지막 일치 항목을 대체 문자열 gsub()로 바꾸세요. 즉, 마지막 일치 항목은 ;
  • 행에 일치 항목이 하나만 포함된 경우 해당 일치 항목을 대체 문자열로 바꿉니다.

예를 들어Gawk에서 "예기치 않은 문자 '\'"가 발생했습니다.

감사해요.

답변1

사용하지 말고 gsub()사용하세요무늬FS 및 OFS에 대한 필드 구분 기호로 OFS를 그대로 유지한 채 마지막 두 필드를 제외한 모든 필드를 인쇄하고 다음으로 마지막에서 두 번째 필드를 인쇄합니다."문자열 바꾸기"그런 다음 마지막 필드가 나옵니다.

awk 'BEGIN{ FS=OFS="pat" }
      NF>1{ for(i=1; i<NF-1; i++) printf "%s", $i OFS;
            printf "%s\n", $i "REPLACEMENT-STRING" $NF; next
}1' infile

입력 예:

        pat 1 pat2 patt 3 pat 4
 pat
patt pat
pa t

산출:

        pat 1 pat2 patt 3 REPLACEMENT-STRING 4
 REPLACEMENT-STRING
patt REPLACEMENT-STRING
pa t

관련 정보