Você quer dizer:
BEGIN { flag=0; FS="[^a-zA-Z]+" } {
for (i=1; i<=NF; i++) {
word = tolower($i)
if ($0 ~ /hello/ ) {
if (flag) {
sub ("hello", "hi", word );
}
flag= !flag
}
words[word]++
}
}
END {
for (w in words)
printf("%3d %s\n", words[w], w)
}
O que isso faz é definir um flag
para 0
na inicialização do programa awk
.
Dentro da iteração do arquivo, ele verifica hello
na string de entrada, se hello
for encontrado, verificará o estado de flag
. Se flag
for 0
, não altere hello
para hi
.
Em seguida, alterne o valor de flag
(0 = > 1, 1 = > 0).
Na próxima ocorrência hello
, o valor flag
será 1
e a substituição de hello
a hi
será feita.