Como obter uma linha específica da saída e salvá-la em uma variável?

0

quando eu executo este comando

user@ubuntu:~$ ./2input1output Jojo Ar Dublin

me dá essa saída

Your First Name: Jojo 
Your Last Name : Ar 
Your Hometown : Dublin
Thank you, Jojo Ar From Dublin,
Welcome to Stackoverflow

Agora eu preciso mostrar as linhas 4 e 5 dessa saída, em seguida, salvá-lo em uma variável, por exemplo, eu chamar a variável MESSAGE , eu tenho que tentar isso

user@ubuntu:~$ (sed -n 4,5p ./2input1output)

mas isso me dá essa saída

echo"Thank you, $1 $2 From $3,
Welcome to stackoverflow"
    
por Aditya 14.10.2018 / 09:30

3 respostas

1

Seu comando está realmente funcionando como esperado; você está pedindo ao sed para retornar as linhas 4 e 5 do arquivo "2input1output". Como você pode ver, os argumentos posicionais (ou seja, $ 1, $ 2 e $ 3) são retornados porque é isso que está no script.

O que você precisa fazer é executar o script primeiro para obter a saída desejada (STDOUT) e, em seguida, canalizar isso para o editor de fluxo (sed). Então, em um hit, para salvar o conteúdo desejado para uma variável:

$ MESSAGE=$(./2input1output Jojo Ar Dublin | sed -n 4,5p)

Lembre-se de que, se precisar preservar caracteres de nova linha ao acessar a variável, coloque-a entre aspas duplas primeiro.

    
por 14.10.2018 / 10:38
0

Eu acho que o sed ganhou a quinta linha do seu roteiro. você pode enviar a saída para outro arquivo, em seguida, as linhas sed que você quer de lá ou no seu bash salvar a saída para uma variável, em seguida, grep as linhas que você deseja.

    
por 14.10.2018 / 10:10
0

Podemos fazê-lo pelo método abaixo também usando o awk

MESSAGE='sh 2input1output Jojo Ar Dublin| awk 'NR >3 && NR<=5 {print $0}'
    
por 14.10.2018 / 18:24