Я хочу манипулировать текстовым файлом, чтобы блоки с отступом были заключены в {{{и}}}.sed insert/append and printing pattern space
Это где я застрял:
1 /^\ [^\ ]/,/^[^\ ]/{ # match range: all indented plus line after that
2 b fixIndented # branch
3 }
4
5 /^[^\ ]/{p;b} # print all non-indented outside range and exit.
6
7 :fixIndented
8 /^[^\ ]/{ # match last line of range
9 x; # swap Holdbuffer und patternSpace, edit patternSpace
10 i\
11 {{{
12 a\
13 }}}
14 p;
15 x;p;
16 }
17 H; # write each line in range into holdBuffer
Я думаю, что линия 15 следует читать в буфере удержания (содержащее то, что я сменил там в строке 9), а затем распечатать его, после управляющего рисунком (строки 10-13) было напечатано (14). Но этого не происходит. Вместо этого он, похоже, объединяет строку из буфера удержания в пространство шаблонов. Как так:
bla
blubb
foo1
bla2
foo3
sadgfasdf
bar
foo
становится:
bla
blubb
{{{
foo1
bla2
foo3
sadgfasdf
}}}
bar
foo
Я был бы очень признателен, если кто-то нашел время, чтобы указать меня в правильном направлении здесь. Спасибо,
+1 за хороший вопрос с интересной проблемой. ..... Но если ваш «женат» на sed, awk будет намного проще решить эту проблему. Удачи – shellter
интересно! Хорошее упражнение. Давай попробуем ! – Utopik