Postagem em destaque

Criando bot do Telegram em Shell script com ShellBot

Anexando o conteúdo de um arquivo no meio de outro arquivo


Apesar do procedimento ser incomum, essa dúvida foi levantada por um membro no grupo shellscriptx no Telegram e é claro como todo problema buscamos solucioná-lo. Embora pareça uma tarefa complexa, a lógica de sua solução é relativamente simples da qual primeiramente preciso encontrar o número da linha que refere-se ao meio do arquivo de destino e a partir dessa linha anexar o conteúdo do arquivo de origem.


Considere o conteúdo dos arquivos abaixo:

destino.txt origem.txt
Radeon 7000 Series
Radeon 8000 & 9000 Series
Radeon R300 Series
Radeon X700 & X800 Series
Radeon X1000 Series
Radeon HD 2000 Series
Radeon HD 3000 Series
Radeon HD 4000 Series
Radeon HD 5000 Series
Radeon HD 6000 Series
Radeon HD 7000 Series
Radeon HD 8000 Series
Radeon R5/R7/R9 200 Series
Radeon R5/R7/R9 300 Series
Radeon RX 400 Series
Radeon RX 500 Series
Radeon RX Vega Series
PCI 4X
AGP 8X
PCI-E 16X















Para encontrar o número da linha referente ao centro do arquivo vou realizar uma operação aritmética simples de divisão que é: calcular o total de linhas contidas no arquivo de destino e dividir por 2, veja a linha de comando:

$(($(cat destino.txt | wc -l)/2))

A ferramenta que utilizarei para anexar o conteúdo será o 'sed' que na minha humilde opinião é mais eficiente neste caso. Usando uma composição com o comando acima em conjunto com a flag 'r' que lê o conteúdo do arquivo de origem a cada iteração do arquivo destino, que no meu caso ocorrerá em uma única linha já que a mesma foi especificada.

$ sed -i "$(($(cat destino.txt | wc -l)/2)) r origem.txt" destino.txt
# Listando conteúdo do arquivo.
$ cat destino.txt 
Radeon 7000 Series
Radeon 8000 & 9000 Series
Radeon R300 Series
Radeon X700 & X800 Series
Radeon X1000 Series
Radeon HD 2000 Series
Radeon HD 3000 Series
Radeon HD 4000 Series
PCI 4X
AGP 8X
PCI-E 16X
Radeon HD 5000 Series
Radeon HD 6000 Series
Radeon HD 7000 Series
Radeon HD 8000 Series
Radeon R5/R7/R9 200 Series
Radeon R5/R7/R9 300 Series
Radeon RX 400 Series
Radeon RX 500 Series
Radeon RX Vega Series
Como esperado o conteúdo do arquivo de origem foi anexado exatamente no centro do arquivo destino. 

Espero que seja útil e não deixe de contribuir com suas dúvidas. Valeu galera !! E até a próxima.

Comentários

Contato

Nome

E-mail *

Mensagem *