Мне нужно удалить некоторый контент, за которым следуют 5 дефисов (в отдельной строке) из 1000 файлов. В основном это выглядит так:
НЕКОТОРЫЕ СОДЕРЖАНИЕ
-----
НЕКОТОРЫЙ СОДЕРЖАНИЕ БУДЕТ УДАЛЕНО С 5 ГИФЕНАМИ ВЫШЕ
Я пытался сделать это с этим решением, но у меня оно не сработало:
- эту команду -
sed '/-----/,$ d' *.txt -i
- нельзя использовать, поскольку некоторые из этих текстов имеют строки с более чем 5 дефисами;
- эта команда -
sed '/^-----$/,$ d' *.txt -i
- привела к тому, что все файлы остались без изменений).
Итак, я понял, что это может быть что-то в отношении символов «^» и «$», но я честен, и я новичок в Sed и RegEx, если честно, и я не знаю, в чем проблема.
Я также обнаружил, что этот RegEx - ^-{5}$(\s|\S)*$
- хорош для захвата только тех блоков, которые начинаются точно с 5 дефисов, но ввод его в команду sed не дает эффекта (и дефисы, и текст после них остаются, где они были).
Что-то я не понимаю в sed, наверное, потому что, когда я использую приведенное выше выражение с Find & Replace , оно работает безупречно. Но я не хочу открывать, изменять и сохранять 1000 файлов вручную.
Я снова задаю этот вопрос, потому что данное решение (ссылка выше) мне не помогло.
Первая команда, которую я опубликовал (sed /-----/,$ d' *.txt -i
), также привела к удалению полного содержимого некоторых файлов, например файла с 5 дефисами, новой строки с одним пробелом (и не более текста) в нижней части это:
НЕКОТОРЫЕ СОДЕРЖАНИЕ
-----
один пробел
EDIT:
Да, я забыл о '
здесь, но в Терминале я использовал эти команды с ним.
Да, эти файлы заканчиваются на \ n или \ r. Есть ли решение для этого?