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
행 수가 file
40058에서 44156으로 증가한 것을 확인했습니다. 이에 대한 이유가 있습니까?
원래 행 수를 유지하는 방법이 있습니까?
답변1
언제든지
(FNR in a) && gsub(/\<Source Term\>/,"& Target Term")
계산 결과가 0이 아니고,즉 FNR
가 포함되어 a
있고 교체가 하나 이상의 하위 문자열을 대체하는 경우 기본 작업이 이기 때문에 현재 줄이 출력됩니다 { print }
.
그 다음에
1
모든 경우에 현재 줄이 출력되도록 합니다(동일한 기본 작업에 의존함).
이는 하위 문자열이 대체된 줄이 두 번 출력된다는 의미입니다.
gsub
호출을 블록에 넣으면 다음을 방지할 수 있습니다.
FNR in a { gsub(/\<Source Term\>/,"& Target Term") }