Как посчитать кол-во совпадений строк в файле?

DrSleep

Премиум
Premium
Регистрация
10.01.2020
Сообщения
71
Реакции
64
Баллы
19
Не для кого не секрет,что много кто взамен старых паролей утекших, начинает использовать видоизменненный старый пароль, например у холдера был пасс password, он просек что его доступ утек,меняет пароль на password1,password123,Password1 и тд.
Взял пару баз вытащил с них пароли,от паролей снял 1, с 1 по 3 символ сначала и аналогично с конца строк.Получилось несколько списков, теперь хочется подбить статистику,сколько людей используют ! в конце пароля,сколько @ в начале пароля и тд.
Если получится провернуть выложу стату на форум,выборка 18кк паролей(думаю достаточно для статической значимости)
P.S. выложил кусочек в 20 с лишним тысяч строк для тестов
 

Вложения

carella

Премиум
Premium
Регистрация
28.05.2020
Сообщения
62
Реакции
26
Депозит
0.004
Баллы
24
Jabber
В файле-примере 19683 повтора строк и 7078 уникальных
 

DrSleep

Премиум
Premium
Регистрация
10.01.2020
Сообщения
71
Реакции
64
Баллы
19
В файле-примере 19683 повтора строк и 7078 уникальных
Нужно не это посчитать, а кол-во строк допустим
Код:
k23 100 строк
123 10000к строк
oft 500 строк
Чтобы потом видно было,сколько людей используют окончание в паролях k23, сколько 123 и тд.
 

carella

Премиум
Premium
Регистрация
28.05.2020
Сообщения
62
Реакции
26
Депозит
0.004
Баллы
24
Jabber
Нужно не это посчитать, а кол-во строк допустим
Код:
k23 100 строк
123 10000к строк
oft 500 строк
Чтобы потом видно было,сколько людей используют окончание в паролях k23, сколько 123 и тд.
А, понял. Сейчас попробую что-то придумать.
 

Pernat1y

(L1) cache
Пользователь
Регистрация
19.04.2008
Сообщения
702
Реакции
358
Депозит
0.0096
Баллы
76
Если совсем просто, то:
Код:
grep 123 file.txt | wc -l
Если по всем сразу:
Код:
for i in $(cat last3.txt); do echo $i: $(grep $i file.txt | wc -l); done
Будет такой вывод:
Код:
k23: 0
123: 3
oft: 0
469: 0
789: 0
989: 0
ked: 0
125: 0
913: 0
me1: 0
a00: 0
 
Последнее редактирование:

DrSleep

Премиум
Premium
Регистрация
10.01.2020
Сообщения
71
Реакции
64
Баллы
19
Если совсем грубо, то
Код:
grep 123 file.txt | wc -l
Правильнее - регексом.
Так надо каждую строку проверить, а не только 123.
Получается нужно сначала прочитать строку,после посчитать сколько раз она встречается в файле,записать инфу в другой файл вида
Код:
123:50000
erq:100
roe:203
дальше считываем следующею строку и так до конца файла.Дубли естестенно удалять нельзя,так мы не сможем посчитать верно.Сделал на зеннопостере софт, но им чекать долго прийдется.

Пока писал добавили
Код:
for i in $(cat last3.txt); do echo $i: $(grep $i file.txt | wc -l); done
сейчас чекну
 
  • Like
Реакции: sk3l

Pernat1y

(L1) cache
Пользователь
Регистрация
19.04.2008
Сообщения
702
Реакции
358
Депозит
0.0096
Баллы
76
Обновил пост выше :)
 

DrSleep

Премиум
Premium
Регистрация
10.01.2020
Сообщения
71
Реакции
64
Баллы
19
Обновил пост выше :)
Код:
for i in $(cat last3.txt); do echo $i: $(grep $i last3.txt | wc -l); done
Ага, одновременно строчим.Вроде то что нужно.Но почему-то доходит до 841 строки
Код:
sty: 5
ink: 9
и перестает дальше работать, делал так
Код:
for i in $(cat last3.txt); do echo $i: $(grep $i last3.txt | wc -l) ; done > 123
Потом еще от дублей почистить и отсортировать по убыванию после :
Код:
for i in $(cat last3.txt); do echo $i: $(grep $i last3.txt | wc -l) ; done > 123 && sort -n -t ':' -k2 123|uniq > result.txt && rm 123
Но непойму почему стопарится на 841 строке
 

Pernat1y

(L1) cache
Пользователь
Регистрация
19.04.2008
Сообщения
702
Реакции
358
Депозит
0.0096
Баллы
76
Стопается из-за минуса в начале строк. Их нужно экранировать.
Например:
sed -i.bak 's,^-,\\-,g' last3.txt
 
Верх