Допустим, длинная строка содержит несколько полей информации (подстрок), каждое из которых заключено в квадратные скобки.Несколько символов, предшествующих каждому из этих полей, являются символом двоеточия.
Цель состоит в том, чтобы переместить все поля, заключенные в квадратные скобки (плюс скобки), в их непосредственно предшествующий символ двоеточия.
$echo "foo: bar [baz] qux: quux [quix]" | sought_command
foo[baz]: bar qux[quix]: quux
Я считаю, что только awk достаточно мощный, чтобы достичь этого, но, возможно, sed может сделать это тоже.
Примечание :
Вот первая попытка с использованием sed :
echo "foo: bar [baz] qux: quux [quix]" | sed 's/\[*]\/\:\1\2/g'
Вот первая попытка с использованием awk :
echo "foo: bar [baz] qux: quux [quix]" | awk -v 'RS=\]' '{print substr($1,1,length($1)-1) $3 "]: " $2}'