AWK 이후 행 수가 증가했습니다.

AWK 이후 행 수가 증가했습니다.

AWK 스크립트를 실행한 후

awk -i inplace '(NR==FNR){a[$1];next}
    (FNR in a) && gsub(/\<Source Term\>/,"& Target Term")
     1
    ' <(shuf -n 198058 -i 1-$(wc -l < file)) file

file명령으로 확인한 후

wc -l file

행 수가 file40058에서 44156으로 증가한 것을 확인했습니다. 이에 대한 이유가 있습니까?

원래 행 수를 유지하는 방법이 있습니까?

답변1

언제든지

(FNR in a) && gsub(/\<Source Term\>/,"& Target Term")

계산 결과가 0이 아니고, FNR가 포함되어 a있고 교체가 하나 이상의 하위 문자열을 대체하는 경우 기본 작업이 이기 때문에 현재 줄이 출력됩니다 { print }.

그 다음에

1

모든 경우에 현재 줄이 출력되도록 합니다(동일한 기본 작업에 의존함).

이는 하위 문자열이 대체된 줄이 두 번 출력된다는 의미입니다.

gsub호출을 블록에 넣으면 다음을 방지할 수 있습니다.

FNR in a { gsub(/\<Source Term\>/,"& Target Term") }

관련 정보