Aguardando a resposta ao meu comentário acima:
awk '/^Question[0-9]+:.*\?$/ {print; next} {print NF, $0}'
ou
awk '{printf "%s%s\n", (/^Question[0-9]+:.*\?$/ ? "" : NF " "), $0}'
Exemplo de entrada:
Question1: What kind of cake do you like?
Anything with sprinkles
Exemplo de saída:
Question1: What kind of cake do you like?
3 Anything with sprinkles
Os únicos marcadores são o "Questionx:" e o "?". Respostas sempre seguem as perguntas. Isso grita awk para mim, (find /? $ /), Mas não consigo fazer com que o aspecto multi-line funcione bem com a contagem de palavras ($ NF). Outras linguagens estão disponíveis, como perl / python / php, etc. mas eu estou tentando evitar programar o que eu sinto que deveria ser um simples liner
Isso fornecerá o número de "palavras" em cada pergunta:
awk '/^Question/ {if (NR > 0) print words; words=0} $0 !~ /^Question/ {words+=NF}' /path/to/input
Para imprimir perguntas e o número de palavras em cada linha, conforme você descreve:
awk '/^Question/ {print} $0 !~ /^Question/ {print NF, $0}' /path/to/input
Para tornar o prefixo numérico de cada linha cumulativo:
awk '/^Question/ {words=0; print} $0 !~ /^Question/ {words+=NF; print words, $0}' /path/to/input
Tags text-processing awk