Попробуйте это:
sed 's/message /&[ yea ]/g' filein > fileout
&
- это согласованное выражение.Никакой специальной обработки для скобок не требуется.
Мне было не совсем понятно, как должны обрабатываться пробелы.Выше просто добавляет [ yea ]
в конец последовательности пробелов фиксированной длины.Если предпочтительнее заменить последние пробелы последовательности проб произвольной длины на [ yea ]
, необходима более сложная команда:
sed 's/\(message \{1,\}\) /\1[ yea ]/g' filein > fileout
Идея в этом случае состоит в том, чтобы соответствовать шаблону, который имеетдве части.Во-первых, это группа, заключенная в скобки \( \)
, которая ищет message
, за которым следует один или несколько пробелов (\{1,\}
. После этого должно быть ровно семь пробелов. Когда найден соответствующий текст, он заменяется текстомгруппы (\1
, обозначающий первую группу), за которой следует [ yea ]
. Стратегию здесь можно адаптировать к другим шаблонам поиска-замены, например, с несколькими группами или другим текстом.