хеш базы данных regex sed sql: извлечение соли - PullRequest
0 голосов
/ 30 июня 2018

Я смотрю на сырую базу данных sql с электронными письмами, именами пользователей, хэшированными паролями, солями и IP-адресами. Я пытаюсь извлечь только хеши и соли. Вот пример:

user@email.com:username:b30805e05c07782d3901bf8814c8cb9d:2WPe'KKYUti3ts2E>$np,:11.22.33.44
user2@email.com:username2:969b9be2f311ac32b7f5c475b115fae6:<t%a!>[4?:OqGHvYWYdZ0:44.33.22.11
user3@email.com:username3:550854338c55ef110fdc599806f087e6:;yzkeZ/FgCMqM:8&Z!S0r:12.34.56.78
user4@email.com:username4:a5477d971ff85fd4052cd745677e6751:&PmDLnlh{fW[&KULDpYz@:87.65.43.21

Я думал о том, чтобы отделить каждую секцию в двоеточии (:) и удалить все справа от последнего появления двоеточия, но есть двоеточие - половина солей. Таким образом, число двоеточий в строке не соответствует. Я в полном недоумении. Кто-нибудь, пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 30 июня 2018

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

sed -r 's/^([^:]*:){2}([^:]*):(.*):.*$/\2 \3/' file

Вы знаете, что первые три поля и пятое относятся к разделителю полей, а четвертое - нет. Удалите первые два поля, оставьте третье и используйте жадность для определения четвертого, т. Е. (.*): вернет наибольшую строку, заканчивающуюся :.

0 голосов
/ 30 июня 2018

Я набрал sed @potong, это только одна команда.
Более сложные awk и cut:

awk -F: '{printf("%s %s", $3, $4); for (i=5;i<NF;i++) printf(":%s",$i); print ""}' file
cut -d: -f3- <(rev file|cut -d: -f2- |rev)
0 голосов
/ 30 июня 2018

Следующее регулярное выражение должно помочь вам:

^(?:.*?):(?:.*?):(.*?):(.*):.*$

или

^(?:(?:.*?):){2}(.*?):(.*):.*$

Демо: https://regex101.com/r/03wuCu/1

Тест:

user@email.com:username:b30805e05c07782d3901bf8814c8cb9d:2WPe'KKYUti3ts2E>$np,:11.22.33.44
user2@email.com:username2:969b9be2f311ac32b7f5c475b115fae6:<t%a!>[4?:OqGHvYWYdZ0:44.33.22.11
user3@email.com:username3:550854338c55ef110fdc599806f087e6:;yzkeZ/FgCMqM:8&Z!S0r:12.34.56.78
user4@email.com:username4:a5477d971ff85fd4052cd745677e6751:&PmDLnlh{fW[&KULDpYz@:87.65.43.21

Выход:

Match 1
Group 1.    24-56   `b30805e05c07782d3901bf8814c8cb9d`
Group 2.    57-78   `2WPe'KKYUti3ts2E>$np,`

Match 2
Group 1.    117-149 `969b9be2f311ac32b7f5c475b115fae6`
Group 2.    150-171 `<t%a!>[4?:OqGHvYWYdZ0`

Match 3
Group 1.    210-242 `550854338c55ef110fdc599806f087e6`
Group 2.    243-264 `;yzkeZ/FgCMqM:8&Z!S0r`

Match 4
Group 1.    303-335 `a5477d971ff85fd4052cd745677e6751`
Group 2.    336-357 `&PmDLnlh{fW[&KULDpYz@`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...