Я разбирал пример, найденный в сети
выражение совпадает с любыми двумя одинаковыми строкам, которые разделены символом новой строки.
/^(.*)\n\1$/
Но по какой-то причине код не работает.
Я написал небольшой скрипт
file=./ex.txt
echo -e "строка строка
строка
строка" > ${file}
echo "******* Текст файла **********"
cat ${file}
echo "*********** 1 **********"
sed -nr "s:^(.*)\n\1$:-found-:p" ${file}
echo "********** 2 **********"
sed -nr "s:^(.*)\\n\1$:\1:p" ${file}
echo "********************"
echo "********** 3 **********"
sed -nr "s:^(.*)\s\1$:\1:p" ${file}
echo "********************"
sed -nr "s:^(.*)\n\1$:-found-:p" ${file}
^ - поиск от начала строки
(.*) - подвыражение(найти любые символы, кроме символа перевода строки \n)
\n - ищется символ перевода строки, за ним сразу смотрится другая строка
\1 - здесь ищется то же, что и в подвыражении (.*) и до конца этой 2-й строки
:-found-: - найденное заменить словом -found-
sed -nr "s:^(.*)\s\1$:\1:p" ${file}
А вот это работает почему-то.
Может кто-то знает в чем дело...