Не могу заменить совпадения моего регулярного выражения

Вот что я сделал:

  • Скачайте ISO с сайта Kali (выберите ISO для вашей системы, 32- или 64-битной) и проверьте, что сумма SHA1 хорошая с помощью igorware-hasher или любого другого инструмента.
  • Используйте Universal-USB-Installer-1.9.6.3 (последняя версия) для создания образа Kali USB
  • Отформатируйте USB-накопитель в FAT32 и позвольте Universal-USB-Installer-1.9.6.3 сделает все остальное.

Убедитесь, что вы используете ПК с той же архитектурой операционной системы, что и версия ISO, которую вы загрузили, 32- или 64-битная. Я попробовал поставить kali-linux-2016.1-amd64.iso на USB-накопитель с 64-битной Windows 7, и он работал, но не загружался на 32-битном ноутбуке, поэтому я переделал его с kali-linux-2016.1-i386.iso на 32-битном ПК, и он работал как шарм.

0
10.03.2019, 15:34
2 ответа

Похоже, вы используете Perl -совместимое регулярное выражение (PCRE )с sed. Утилита sedзнает только основные регулярные выражения (BRE )по умолчанию (или расширенные регулярные выражения (ERE )при использовании с -Eв большинстве систем ).

Я также не думаю, что синтаксис sedправильный, но его трудно читать, потому что выражение в вопросе, похоже, содержит в себе дополнительные *. Кажется, вы хотите удалить составной разделитель в сообщении электронной почты, но, похоже, вас не заботит их правильное сопоставление (сопоставление начала одной составной части с соответствующим конечным разделителем ). Если бы синтаксис sedбыл исправлен, выражение, скорее всего, удалило бы все содержимое электронных писем или объединило бы все вложения в тело сообщения.

Выражение PCRE

^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$

совпадает с ERE (для использования сsed -E)

^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3})?=$

и использование этого с d(, которое вы, кажется, делаете ), чтобы удалить эти строки, но конечный / /gв вашей команде sedявляется ошибкой. Удаление / /g, скорее всего, приведет к объединению всех вложений в тело письма.

Если вы хотите удалить вложения из сообщений электронной почты (, как указано в комментариях ),Я бы не стал пытаться сделать это с sed, но с подходящим парсером сообщений электронной почты.

Примеры того, как это сделать, можно найти в следующих связанных вопросах:

Лично я бы написал Perl-скрипт, аналогичный тому, что приведен в первом связанном вопросе/ответе выше. Просто не забывайте всегда запускать тестовые прогоны таких скриптов на копиях ваших почтовых ящиков, на случай, если вы допустите ошибку.

Почтовый инструмент fdmможет фильтровать сообщения на основе количества и/или размера вложений, что может быть удобно для фильтрации больших сообщений электронной почты из архивных почтовых ящиков.

1
28.01.2020, 02:40

попробуй:

sed -E "s/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$//g" file

и дважды -проверьте вывод. -EДОЛЖНЫ быть капитала. -eне работает.

Если вы уверены, что это работает, используйте вместо этого -iE, чтобы внести изменения непосредственно в файл

0
28.01.2020, 02:40

Теги

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