2010-06-29 2 views
1

Я использовал следующие AWK для того, чтобы посчитать все слова, которые появляются в поле 4СЭД + подсчет количества слов на поле 3

awk '{print $4}' file | awk '{print NF}' | grep -c 1 

Как мы можем к тому же в СЭД?

Пример файла:

1 2 3 4 
1 2 
1 2 3 4 5 
1 2 
1 2 3 
1 2 3 4 

Из файла SED должен возвращать результаты 3 (три слова на поле 4)

Яэль

ответ

1

Прежде всего, ваш awk весьма неэффективно. Попробуйте это:

awk '$4{c++}END{print c}' file 

Почему вы хотите в sed, кстати? Это то, что делает awk. Если вы действительно хотите в sed, я думаю, что-то вроде этого:

sed '/^\s*\S*\s*\S*\s*\S*\s*$/d' file | wc -l 

awk Объяснение: В каждой строке, где четвертое поле является ненулевым, прибавка с. В конце напечатать c.

sed описание: удалите каждую строку, которая соответствует регулярному выражению. Затем с wc подсчитайте линии вывода sed. Регулярное выражение в основном говорит, что в строке может быть не более двух пробельных групп, не считая начальных и конечных, что означает, что в строке может быть не более трех полей.

0

cut также могут быть использованы:

cut -f 5 -d' ' file | wc -w 

5. Выберите столбец (первый пуст из-за ведущим пустым). Разделитель - это пробел.

0

Это может работать для вас:

sed 's/ *[^ ]*/&/4;t;d;' file | sed -n '$=' 
Смежные вопросы