$ sed 's/.*]//' file.txt | tr -s ' '
foo1 bar1
foo2 bar2
foo3 bar3
foo4 bar4
foo5 bar5
O sed remove tudo na linha até (e incluindo) o% final] e o tr compacta vários espaços consecutivos em espaços únicos.
Como alternativa, usando apenas sed :
sed -e 's/.*]//' -e 's/ */ /g' file.txt
Com os dados de entrada fornecidos, isso produz a mesma saída que o primeiro pipeline.
Este sed primeiro faz s/.*]// , o que exclui tudo até o ] (inclusive). A segunda expressão corresponde a ␣␣* , ou seja, um espaço seguido por zero ou mais espaços e os substitui por um único espaço. A segunda expressão é aplicada em toda a linha e tem o mesmo efeito que tr -s ' ' , ou seja, comprime vários espaços consecutivos em espaços únicos.
Usando awk :
awk -F '[][:blank:]]*' '{ print $3,$4 }' file.txt
Aqui, usamos ] ou espaços ou tabulações como separadores de campo (múltiplos deles podem separar duas colunas, e é por isso que usamos * após o [...] ). Dados esses separadores, os dados desejados estão disponíveis nos campos 3 e 4 em cada linha.
Após os dados da pergunta terem sido editados para remover alguns espaços entre as duas últimas colunas, o seguinte também fará o trabalho:
cut -d ']' -f 3 file.txt
alternativamente apenas
sed 's/.*]//' file.txt
ou
awk -F ']' '{ print $3 }' file.txt