С perl
perl -lne 'print join " ", /\{\{\h*\K.*?(?=\h*\}\})/g'
/\{\{\h*\K.*?(?=\h*\}\})/g
, чтобы получить все совпадения, найденные между {{
и }}
с необязательными горизонтальными пробелами вокруг совпадения -
.*?
не жадный, .*
жадный и будет совпадать с первого {{
до последнего }}
\K
, чтобы игнорировать соответствующий текст до этой точки (?=...)
впереди, опять же, чтобы избежать этой части как части совпадающего текста
- совпадения затем соединяются с пробелом в качестве разделителя
С sed
sed 's/[^{]*{{ *\([^} ]*\) *}}[^{]*/\1 /g; s/ *$//'
Это работает для данного образца, но может не подходить для других случаев. Это работает, удаляя текст вокруг необходимых частей, предполагая, что {
и }
достаточно уникальны.