Saída do pipe md5sum para uma linha de arquivo específica

0


Eu encontrei alguns exemplos "quase bons", mas nenhum deles funcionou como deveria.

Eu tenho um arquivo a.txt e um arquivo checkme.txt . Eu quero executar o comando md5sum checkme.txt e escrevê-lo como uma 10ª linha do arquivo a.txt .

Eu tentei usar o comando sed , mas não funcionou. Alguém pode me ajudar, por favor?

    
por Emil Beza 26.04.2018 / 15:57

2 respostas

0

sed solução:

sed '10 s/.*/'"$(md5sum checkme.txt | cut -d' ' -f1)"'/' a.txt
  • 10 s/.*/<md5sum result>/ - substitui o conteúdo da décima linha
por 26.04.2018 / 16:10
0

Uma solução ed :

printf '10d\n-1r !md5sum checkme.txt\n' | ed -s a.txt

O script ed :

10d
-1r !md5sum checkme.txt

Isso exclui a décima linha de a.txt e insere a saída de md5sum checkme.txt em seu lugar. Isso não fará muito, pois o resultado não será exibido nem salvo.

Para gravar o resultado no terminal:

printf '10d\n-1r !md5sum checkme.txt\n,p\n' | ed -s a.txt

Para gravar o resultado novamente em a.txt :

printf '10d\n-1r !md5sum checkme.txt\nw\n' | ed -s a.txt

Se a.txt tiver menos de 10 linhas, nenhuma modificação será feita no arquivo.

    
por 26.04.2018 / 16:18