Como anexar várias linhas antes da última linha usando o comando echo

1
{  
  This is test1  
  this is test2  
  this is test3  
}

Agora eu quero acrescentar várias linhas antes da última linha usando o comando echo Alguém por favor me ajude !!!!

Minha saída é semelhante a

{  
  This is test1  
  this is test2  
  this is test3  
  this is test4  
  this is test5  
}  

Usando Echo Comandos não sed ou awk

    
por Sunil Makwana 19.06.2018 / 07:11

2 respostas

0

Você pode usar head com echo para conseguir isso

  cat <outputfilename> | head -n -1  && echo -e "  this is test4\n  this is test5\n  this is test6\n}"

Se você deseja anexar a saída em um arquivo, basta usar o redirecionamento de saída " > "

  (cat <outputfilename> | head -n -1  && echo -e "  this is test4\n  this is test5\n  this is test6\n}") > <RESULTFILENAME>
    
por 19.06.2018 / 07:19
1

sed é a maneira correta de fazer isso, mesmo que você tenha dito que, por algum motivo, não quer usar sed .

O script sed seria parecido com

$i\
  this is test4\
  this is test5

e você executaria isso como sed -f script.sed file . O comando i insere linhas antes da linha endereçada e o $ endereça a última linha do arquivo.

Como um "one-liner" usando o GNU sed :

$ sed -e '$i\' -e '  this is test4\' -e '  this is test5' file
{
  This is test1
  this is test2
  this is test3
  this is test4
  this is test5
}

Dependendo se o arquivo é, na verdade, um arquivo JSON ou em algum outro formato de texto estruturado, pode haver ferramentas como jq que são mais adequadas para manipulá-lo.

Para usar echo conforme solicitado (isso também pressupõe que você esteja usando head do GNU coreutils, pois a opção -n geralmente não recebe um número negativo):

{   head -n -1 file
    echo '  this is test4'
    echo '  this is test5'
    tail -n 1 file; } >newfile
    
por 19.06.2018 / 07:56

Tags