Список количества точных строк в файле

Попробуйте grep все, что не =:

# echo '9701=1?? 
9701=10.Pp 
9701=1a 8a 
9701=3.a_tt 
9701=1/a -00
9701=Bg1998pps' | egrep -o '9701=[^=]{1,50}'
9701=1?? 
9701=10.Pp 
9701=1a 8a 
9701=3.a_tt 
9701=1/a -00
9701=Bg1998pps
# echo '9701=Bg19=98pps' | egrep -o '9701=[^=]{1,50}'
9701=Bg19
## If you too need to include equal char
# echo '9701=Bg19= 98pps' | egrep -o '9701=.{1,50}'
9701=Bg19= 98pps
1
21.05.2017, 22:54
2 ответа

Использование tr, sortиuniq:

$ tr -s ' ' '\n' <file | sort | uniq -c
   1
  17 1
   5 11
   1 111
   2 11111
   1 1111111
   1 11111111

Это дает вам количество для одной пустой строки, а также (первая строка в выводе выше ), но вы можете избежать этого с помощьюsed:

$ tr -s ' ' '\n' <file | sed '/^$/d' | sort | uniq -c
  17 1
   5 11
   1 111
   2 11111
   1 1111111
   1 11111111

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

1
27.01.2020, 23:45

Я бы не стал использовать grep для этого, но с awk:

$ a="11111  1  11  1111111    1 1  1  1 1 1 1  111 1  1 1  1  11 11111111   1    11 1 11 11  1 11111   1 1"

$ awk '{for (i=1;i<=NF;i++) ++seen[$i]}END{for (k in seen) print k,"found:"seen[k]}' <<<"$a"
1 found:17
11 found:5
111 found:1
11111 found:2
1111111 found:1
11111111 found:1

Эта однострочная демонстрация должна работать со всем вашим файлом (замените <<<"$a" на yourfile )

0
27.01.2020, 23:45

Теги

Похожие вопросы