Вы можете перебрать файлы и использовать ed . Команда ed
будет:
ed -s input <<< $'/^From.*@/m0\nw\nq'
Это редактирует файл с именем input
в сценарии -в режиме(-s
)для подавления печати байтов при сохранении и выходе. Здесь -строка <<< $'... '
отправляет команды ed
на свой стандартный ввод. Эти команды предписывают найти строку, в которой она начинается со строки From
, за которой следует что-либо, за которым следует @
; в этой строке выполните команду ove m
и поместите ее после нулевой строки --, чтобы сделать ее новой первой строкой. Затем w
запишите файл обратно на диск и q
uit.
Все, что осталось, это перебрать файлы с помощью некоторого подстановочного знака оболочки и выполнить for
цикл; например:
for file in./*.txt
do
ed -s "$file" <<< $'/^From.*@/m0\nw\nq'
done
Это редактирует ваши файлы в -месте, поэтому работайте над резервной копией, пока не будете довольны результатами.
Вы можете ужесточить шаблон поиска регулярного выражения /^From.*@/
, если ваши данные поддерживают его;возможно, добавив требования для существования строки даты или для существования определенного количества субдоменов -в адресе электронной почты и т. д.
Для получения дополнительной информации о ed
, установите его и запустите man ed
или info ed
; или проверьте интерактивную справочную страницу для ed .