Как сделать команду `в `, чтобы понять псевдоним или функцию bash?

Вы можете перебрать файлы и использовать ed . Команда edбудет:

ed -s input <<< $'/^From.*@/m0\nw\nq'

Это редактирует файл с именем inputв сценарии -в режиме(-s)для подавления печати байтов при сохранении и выходе. Здесь -строка <<< $'... 'отправляет команды edна свой стандартный ввод. Эти команды предписывают найти строку, в которой она начинается со строки From, за которой следует что-либо, за которым следует @; в этой строке выполните команду ove mи поместите ее после нулевой строки --, чтобы сделать ее новой первой строкой. Затем wзапишите файл обратно на диск и quit.

Все, что осталось, это перебрать файлы с помощью некоторого подстановочного знака оболочки и выполнить forцикл; например:

for file in./*.txt
do
  ed -s "$file" <<< $'/^From.*@/m0\nw\nq'
done

Это редактирует ваши файлы в -месте, поэтому работайте над резервной копией, пока не будете довольны результатами.

Вы можете ужесточить шаблон поиска регулярного выражения /^From.*@/, если ваши данные поддерживают его;возможно, добавив требования для существования строки даты или для существования определенного количества субдоменов -в адресе электронной почты и т. д.

Для получения дополнительной информации о ed, установите его и запустите man edили info ed; или проверьте интерактивную справочную страницу для ed .

0
10.02.2021, 09:35
0 ответов

Теги

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