В указанном вами случае c нет необходимости выполнять две команды. Вы можете просто сделать это
sed 's/(.*] //' yourfile
(обратите внимание, здесь нет необходимости экранировать ]
). Очевидно, что это удалит из первой открывающей скобки в строке до последней закрывающей квадратной скобки после нее (что может отличаться от второй, если после второй группы есть другие […]
группы.
Другой, более точный способ сделать это может быть,
sed 's/([^)]*) *\([^[]*\) *\[[^]]*\] /\1/' yourfile
где ([^)]*)
соответствует первой группе (…)
, \([^[]*\)
соответствует и фиксирует следующую последовательность из нуля или более не [
, а \[[^]]*\]
соответствует первой группе […]
после нее. (Два *
и последний
являются попыткой избавиться от всех пробелов, следующих за )
и предшествующих [
, и могут быть скорректированы при необходимости.)