Как мне прописать все хеши MD5 внутри файла? - PullRequest
1 голос
/ 20 января 2020

Я публикую этот вопрос с большим количеством контекста и примеров, потому что по общему признанию мой последний пост был срочно отправлен Я пытаюсь найти ВСЕ MD5-хэши (основанные на регулярном выражении) и просто прописать их в нижнем регистре (независимо от формата и независимо от того, что еще находится в строке).

Ранее я публиковал аналогичный вопрос, связанный со строчными буквами электронные письма, и это был решенный ответ (возможно, это поможет найти ответ).

sed -e 's/^\([^@]*\)@/\L\1@/' file

Используемое мной регулярное выражение MD5: [a-f0-9]{32}

Я приведу несколько примеров сейчас (каждая строка уникальна - есть НЕ установленный шаблон)

Входные данные:

fwefwe:few32rfwe:3r2frewg:-::d3ewStack:D077F244DEF8A70E5EA758BD8352FCD8
fwefwe:few33rfwe:3r2frewg:-::dsasaewStack:06D80EB0C50B49A509B49F2424E8C805
fwefwe:few34rfwe:3r2f3213ef::2d3ewStack:F1BDF5ED1D7AD7EDE4E3809BD35644B0
fwefwe:few35rf32re4frewgre3frewg:-::d3ewStack:DDE2C7AD63AD86D6A18DE781205D194F

Выходные данные:

fwefwe:few32rfwe:3r2frewg:-::d3ewStack:d077f244def8a70e5ea758bd8352fcd8
fwefwe:few33rfwe:3r2frewg:-::dsasaewStack:06d80eb0c50b49a509b49f2424e8c805
fwefwe:few34rfwe:3r2f3213ef::2d3ewStack:f1bdf5ed1d7ad7ede4e3809bd35644b0
fwefwe:few35rf32re4frewgre3frewg:-::d3ewStack:dde2c7ad63ad86d6a18de781205d194f

Ответы [ 2 ]

3 голосов
/ 20 января 2020

Вы можете использовать

sed -E 's/[A-F0-9]{32}/\L&/g' file

Если вы также хотите изменить существующий файл, добавьте параметр -i:

sed -i -E 's/[A-F0-9]{32}/\L&/g' file

Суть в том, что вам нужно использовать -E опция для включения синтаксиса регулярных выражений POSIX ERE и записи квантификатора {...} без экранирования. Эквивалент POSIX BRE будет выглядеть как sed -i 's/[A-F0-9]\{32\}/\L&/g' file.

Кроме того, я добавил флаг g для изменения всех совпадений в строке.

1 голос
/ 20 января 2020

Вы делаете это так же, как вы делали это в нижнем регистре электронной почты. Используйте регулярное выражение, чтобы соответствовать части строки, затем используйте обратную ссылку в замене, чтобы поднять это.

sed -e 's/[a-fA-F0-9]\{32\}/\L&/' file

В замене & заменяется тем, что соответствует регулярному выражению, и \L строчные.

...