adicionar várias linhas em um arquivo [RESOLVIDO]

1. adicionar várias linhas em um arquivo [RESOLVIDO]

Rodrigo
senedino

(usa Red Hat)

Enviado em 12/12/2014 - 14:22h

Olá meus amigos!

tenho um arquivo com muitas linhas, abaixo está apenas um exemplo, e eu necessito montar um script para adicionar duas linhas (tf e tns) que irão se repetir, e depois adicionar outra linha chamada br seguida de um nome de arquivo está em uma tabela em outro arquivo. Segue abaixo um exemplo de como está e de como eu gostaria que ficasse.

Como está:
_____________________________________
$cat teste.txt
co 423N5D4UT0LNQe6QVBMNQNLP5J6
co 6AG6J8MTSN7PQe6FGGPE6UJU4J2
co 85JET3DCCS69LeF1CHC5O9AOVC0
_____________________________________


como eu gostaria que ficasse:
_____________________________________
$ cat teste.txt
co 423N5D4UT0LNQe6QVBMNQNLP5J6
tf
tns
br rodas.jpg
co 6AG6J8MTSN7PQe6FGGPE6UJU4J2
tf
tns
br canal.xls
co 85JET3DCCS69LeF1CHC5O9AOVC0
tf
tns
br filmes.dwc
_____________________________________

Depois da linha "br" eu tenho que colocar o nome do arquivo, pegando a informação através de outro arquivo.




  


2. Re: adicionar várias linhas em um arquivo [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 12/12/2014 - 16:02h


[...]
tenho um arquivo com muitas linhas, abaixo está apenas um exemplo, e eu necessito montar um script para adicionar duas linhas (tf e tns) que irão se repetir, e depois adicionar outra linha chamada br seguida de um nome de arquivo está em uma tabela em outro arquivo.

Sem saber como é esse "outro arquivo" e qual a relação dele com o "arquivo com muitas linhas" não é possível sugerir como proceder. A primeira parte pode ser facilmente resolvida com qualquer uma das opções a seguir:

$ while IFS=$'\n' read line; do echo $line; [[ $line =~ "^co " ]] && echo -e "tf\ntns"; done < teste.txt
$ sed -e '/^co\s/{atf\ntns' -e '}' teste.txt
$ awk '{print}/^co /{print "tf\ntns"}' text.txt

Talvez nenhuma delas seja adaptável ao que você deseja obter ao final do processamento.


3. Re: adicionar várias linhas em um arquivo [RESOLVIDO]

Rodrigo
senedino

(usa Red Hat)

Enviado em 12/12/2014 - 17:47h

Olá textmode

consegui adicionar as duas primeiras linhas, com o awk abaixo:
awk '{print; print "tf"; print "tns";}' file.txt

mas ainda não consegui adicionar a terceira linha que tem que vir de outro arquivo.

Saberia informar se o awk consegue adicionar linha em um arquivo, mas usando outro arquivo.

abracos




4. Re: adicionar várias linhas em um arquivo [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 12/12/2014 - 19:55h


Saberia informar se o awk consegue adicionar linha em um arquivo, mas usando outro arquivo.

Sem saber como é esse "outro arquivo" e como ele relaciona-se com o arquivo do teste não tem como responder. Conseguiria criar um exemplo ainda que simplista?



5. Re: adicionar várias linhas em um arquivo [RESOLVIDO]

Rodrigo
senedino

(usa Red Hat)

Enviado em 12/12/2014 - 22:19h


como é:
cat teste_1.txt
423N5D4UT0LNQe6QVBMNQNLP5J6
6AG6J8MTSN7PQe6FGGPE6UJU4J2
85JET3DCCS69LeF1CHC5O9AOVC0


Como deve ficar:
# cat teste.txt
co 423N5D4UT0LNQe6QVBMNQNLP5J6
tf
tns
br rodas.jpg
co 6AG6J8MTSN7PQe6FGGPE6UJU4J2
tf
tns
br rodas.jpg
co 85JET3DCCS69LeF1CHC5O9AOVC0
tf
tns
br filmes.dwc

depois do "br" é necessário adicionar informações de outro arquivo, que neste exemplo eu chamo de file_name.txt

# cat file_name.txt
rodas.jpg
rodas.jpg
filmes.dwc

consegui fechar o script com "sdiff", "sed" e "awk" com a seguintes linha:
# sdiff teste_1.txt file_name.txt | sed -r 's/[<>|]//;s/(\t){3}//'|awk '{printf("co %s\ntf\ntns\nbr %s\n", $1, $2)}'

outro teste que consegui com o abaixo, mas no caso debaixo ele leva muito tempo para terminar:

# cat teste_1.txt | while read a; do ARQUIVO_2=`sed -n "${COUNT},${COUNT}p" file_name.txt`; echo "co "${a}; echo "tf"; echo "tns"; echo "br" ${ARQUIVO_2}; COUNT=`expr $COUNT + 1`; done

abracos






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts