Como insiro o conteúdo de um arquivo em cada lista de arquivos?

0

Eu tenho 2 arquivos, um com uma lista de arquivos de texto e outro com conteúdo que quero adicionar.

Parece que não consigo usar a variável em um script bash.

o script é assim:

for name in $(cat /home/stuff/list)
do 
  keysss='cat /home/stuff/test'
  sed -i "27i $keysss " $name
done

Desta forma, dá um erro. Outras formas que tentei imprimir a palavra, mas quero imprimir o conteúdo dela no arquivo

ps. os arquivos contêm certificados raiz ca

    
por Vitalik Jimbei 22.06.2017 / 13:31

1 resposta

1

Em vez de ler o arquivo em uma variável e inserir esse conteúdo com o comando i (que falhará em certos casos, como a falha que contém novas linhas / eles precisariam escapar), você deve usar o comando r para anexe o texto diretamente:

for name in $(cat /home/stuff/list); do 
  sed -i "27r /home/stuff/test" $name
done

Para evitar os problemas com backticks , seria melhor usar:

while read -r name; do 
  sed -i "27r /home/stuff/test" "$name"
done < /home/stuff/list

Ou mais simplesmente:

xargs -rd '\n' -- sed -i "27r /home/stuff/test" < /home/stuff/list
    
por Philippos 15.08.2017 / 13:34