Пример ввода:
Question1: What kind of cake do you like?
Anything with sprinkles
Пример вывода:
Question1: What kind of cake do you like?
3 Anything with sprinkles
Единственными маркерами являются« Questionx: »и«? ». Ответы всегда следуют за вопросами. Это кричит awk для меня (find /? $ /), но я не могу заставить многострочный аспект хорошо играть с подсчетом слов ($ NF). Доступны другие языки, такие как perl / python / php и т. д., но Я стараюсь избегать программирования того, что, как мне кажется, должно быть простым однострочником
Это даст количество «слов» в каждом вопросе отдельно:
awk '/^Question/ {if (NR > 0) print words; words=0} $0 !~ /^Question/ {words+=NF}' /path/to/input
Чтобы напечатать вопросы и количество слов в каждой строке, как вы описываете:
awk '/^Question/ {print} $0 !~ /^Question/ {print NF, $0}' /path/to/input
Чтобы сделать числовой префикс каждой строки кумулятивным:
awk '/^Question/ {words=0; print} $0 !~ /^Question/ {words+=NF; print words, $0}' /path/to/input
В ожидании ответа на мой комментарий выше:
awk '/^Question[0-9]+:.*\?$/ {print; next} {print NF, $0}'
или
awk '{printf "%s%s\n", (/^Question[0-9]+:.*\?$/ ? "" : NF " "), $0}'