Подставка Sed с 3 линиями раздвижных окон

Мне нужно реализовать трехстрочное скользящее окно с Sed, чтобы изменить любое возникновение трех следующих сгруппированных строк в большом текстовом файле:

Fax: 05.11.22.33.44<LF> <LF> <LF> 

с этим :

 Fax: 05.11.22.33.44<LF> ### <LF> 

Я попытался сделать это со следующей командной строкой (sed работает в пакетном файле msdos, но он не работает также под моим Linux-bash):

 sed -i ":a;$!N;s/\nFax: \([ 0-9\.]*\n\n\);tenough;$!ba;:enough/\nFax: \1###\n/;$!ba;P;D" file.txt 

Что не так ?

  • Удалить конечные запятые в строке
  • Хотите найти две строки подряд с не менее n символами
  • удалите весь текст после определенного символа, который появляется на нечетных строках
  • Как изменить формат текста с помощью sed?
  • найти поле и переместить его до конца строки
  • Текстовое поле с дублирующейся информацией
  • Замените LF CRLF в начале файла
  • Как использовать sed с круглыми скобками?
  • 2 Solutions collect form web for “Подставка Sed с 3 линиями раздвижных окон”

    Вы получили часть P;D Остальное – неудачная попытка потянуть линии в пространстве шаблонов, пока замена не будет успешной, что не обязательно плохо, но определенно не скользящее окно.
    Вы должны вытащить одну строку, если на первой строке, затем используйте цикл N;P;D (таким образом, у вас всегда есть три строки в пространстве шаблонов) и пытайтесь заменить каждый раз, когда вы тянете новую строку

     sed '1N;$!N;s/\(PATTERN\n\)\(\n\)$/\1###\2/;P;D' infile 

    Я думаю, что это близко к вашей первоначальной попытке реализации:

     sed ':a; $q; N; s/\(Fax:.*\n\)\n$/\1###\n/; 3,${P;D}; ba' 

    Ex.

     $ sed ':a; $q; N; s/\(Fax:.*\n\)\n$/\1###\n/; 3,${P;D}; ba' input > output $ diff -y input output Fax: 05.11.22.33.44 Fax: 05.11.22.33.44 Fax: 05.11.22.33.44 Fax: 05.11.22.33.44 Fax: 05.11.22.33.44 Fax: 05.11.22.33.44 | ### Fax: 05.11.22.33.44 Fax: 05.11.22.33.44 Fax: 05.11.22.33.44 Fax: 05.11.22.33.44 | ### Fax: 05.11.22.33.44 Fax: 05.11.22.33.44 

    Трюк – это 3,${P;D} , это то, что поддерживает 3-строчное окно (путем выталкивания одной строки из пространства шаблонов каждый раз вокруг цикла, но только после того, как количество строк достигает 3).

    Interesting Posts

    Почему мои процессоры не нумеруются последовательно?

    гость владеет NIC, хостом и другими гостями через NAT

    Как настроить zsh, чтобы он объяснил мне, где я могу получить исполняемый файл вместо того, чтобы сказать, что файл не найден?

    Персональная страница с сохраненными текстовыми украшениями, пропорциональным текстом и кодом фиксированной ширины

    Изменение системы идентификаторов пользователей и групп (в том числе атрибутов файловой системы)?

    Как слить два файла * .avi в один

    Непрерывный лог-поворот tcpdump – работа с разъединением интерфейса

    Содержимое буфера Vi остается на экране после использования экранных команд

    debian / смотреть для Fedora

    Нужно ли останавливаться, чтобы действительно отключить питание?

    Возможно ли подключение Wi-Fi и Ethernet к одной сети?

    Ошибка с сертификатами fetchmail и SSL

    Присоединить несколько раз к сеансу одного экрана

    Ввод китайского языка в Debian с использованием IBus

    Извлечение IP из IP.port

    Linux и Unix - лучшая ОС в мире.