Usando o awk
Imprime a primeira linha sem { e a quarta linha:
$ show server pool | awk 'NR==1{sub(/{/, ""); printf "%s",$0} NR==4'
sw pool test status up
Como funciona
-
NR==1{sub(/{/, ""); printf "%s",$0}A condição
NR==1seleciona a primeira linha. Para esta linha, o{é removido com o comandosube, em seguida, a linha é impressa usandoprintf(sem uma nova linha). -
NR==4A condição
NR==4seleciona a quarta linha. Como nenhuma ação é especificada para essa condição,awkfaz a ação padrão que é. exatamente como queremos, para imprimir a linha.
Usando sed
A mesma coisa é possível com sed :
$ show server pool | sed 'h;N;N;x;N; s/{\n//'
sw pool test status up
Como funciona
-
hIsso salva a primeira linha no espaço de espera.
-
N;NIsto lê as linhas 2 e 3.
-
xIsso troca o espaço de espera e padrão. Isso coloca a linha 1 de volta no espaço padrão.
-
NIsto lê a próxima linha, linha 4, no espaço padrão, anexando-o à linha 1.
-
s/{\n//Isso remove a chave e a nova linha do final da linha 1 para que a linha 1 e a linha 4 sejam agora mescladas com a chave removida. Isso é o que é impresso.