Я протестировал приведенную ниже команду sed, и у меня все сработало
sed "s/particulier\..*<a/particulier.<a/g" file
выход
...Something before
<description><![CDATA[Des chercheurs de l'université de Columbia à New York ont mis au point un nouveau moyen de cacher un message dans un texte sans en altérer le sens et sans dépendre d'un format de fichier particulier.<a href="https://korben.info/cacher-des-informations-dans-un-texte-grace-a-des-modifications-sur-les-caracteres.html">Passage a la news suivante</a>]]></description>
... Other news
Сawk
:
awk '/error/ {n = 6}
n {print prev; n--}
{prev = $0}
END {if (n) print}
' < your-file
Или добавить пустую строку между этими группами из 6 (при условии отсутствия перекрывающихся )строк:
awk '/error/ {n = 6; if (x++) print ""}
n {print prev; n--}
{prev = $0}
END {if (n) print}
' < your-file
Обязательно используйте /usr/xpg4/bin/awk
, nawk
или /usr/gnu/bin/awk
в Solaris. Тот, что в /bin
, устарел из 70-х и не поддерживает современный стандартный синтаксис.
Если у вас есть /usr/gnu/bin/awk
хотя(text/gawk
пакет ), скорее всего, у вас есть /usr/gnu/bin/grep
а также(text/gnu-grep
пакет )и вы можете использовать его -A
/ -B
расширения:
/usr/gnu/bin/grep -B1 -A4 error < your-file
(GNU grep
разделяет не-перекрывающиеся группы --
строками ).