2016-08-31 4 views
1

Как говорится в заголовке, мне интересно, есть ли более простой способ получить количество слов между двумя строками в текстовом файле, используя инструменты обработки текста, доступные на * Никс.подсчитывает количество слов между двумя строками в текстовом файле

В приведенном примере текстовый файл выглядит следующим образом,

a bc ae 
a b 
ae we wke wew 

countwords между 1-2 -> 5, 2-3 -> 6.

+0

Вы пробовали 'wc' (* количество слов *)? – Jdamian

ответ

0

Вы можете сделать это с помощью простой awk команда: -

awk -v start='1' -v end='2' 'NR>=start && NR <=end{sum+=NF}END{print sum}' file 

Для файла примера вы предоставили: -

$ cat file 
a bc ae 
a b 
ae we wke wew 

$ awk -v start='1' -v end='2' 'NR>=start && NR <=end{sum+=NF}END{print sum}' file 
5 

$ awk -v start='2' -v end='3' 'NR>=start && NR <=end{sum+=NF}END{print sum}' file 
6 

$ awk -v start='1' -v end='3' 'NR>=start && NR <=end{sum+=NF}END{print sum}' file 
9 

Логика проста: -

  1. Используйте start, end переменные для определения диапазонов в файле, они awk переменные
  2. NR>=start && NR <=end обеспечивает условие петли из линий, которые необходимо
  3. sum+=NF делает число слов арифметическим. NF - это специальная переменная awk, которая подсчитывает количество слов, делентованных на IFS, что в данном случае является белым.
  4. END{print sum} печатает окончательный счет.

работал отлично на GNU Awk 3.1.7

3

Вы можете использовать sed и wc вроде этого:

sed -n '1,2p' file | wc -w 
5 

и

sed -n '2,3p' file | wc -w 
6 
+0

Самое простое решение, я думаю .. –

Смежные вопросы