Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
adicionar linhas a meio de um ficheiro
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Portuguese
View previous topic :: View next topic  
Author Message
Dexter2004
Tux's lil' helper
Tux's lil' helper


Joined: 23 Jul 2004
Posts: 123

PostPosted: Thu Oct 28, 2004 10:45 am    Post subject: adicionar linhas a meio de um ficheiro Reply with quote

Viva

eu estou a entar fazer um script (bash) para instalar um programa e preciso de inserir umas linhas a meio de um ficheiro se elas não existirem...

como posso fazer isto? quero ver se um ficheiro tem um determinada linha e se n tiver adicionala num determinado sitio...

desde ja agradeço
Back to top
View user's profile Send private message
xef
Guru
Guru


Joined: 20 Jun 2003
Posts: 460
Location: Porto - Portugal

PostPosted: Thu Oct 28, 2004 12:09 pm    Post subject: Reply with quote

Para detectar se a linha existe podes fazer um grep, quanto a inserir a linha, usa o head e tail para passar para outro ficheiro as linhas até onde queres inserir, depois insere a nova linha nesse ficheiro e finalmente mais um head ou tail para copiar as restantes. No fim, moves o novo ficheiro para cima do antigo.


Esta é uma forma, provavelmente há algo melhor, talvez o awk faça isso, mas esse não sei usar.
Back to top
View user's profile Send private message
Dexter2004
Tux's lil' helper
Tux's lil' helper


Joined: 23 Jul 2004
Posts: 123

PostPosted: Thu Oct 28, 2004 12:46 pm    Post subject: Reply with quote

muito obrigado...

ja agora como se usa o head e o tail?
Back to top
View user's profile Send private message
xef
Guru
Guru


Joined: 20 Jun 2003
Posts: 460
Location: Porto - Portugal

PostPosted: Thu Oct 28, 2004 1:19 pm    Post subject: Reply with quote

head [OPTION] [FILE]

-n, --lines=NUMBER
print first NUMBER lines instead of first 10


ou seja, head -l 20 ficheiro
mostra as primeiras 20 linhas

o tail é a mesma coisa mas para as ultimas linhas.
head -l 20 ficheiro
mostra as ultimas 20 linhas


Recomendo uma leitura de mal head e mal tail
Back to top
View user's profile Send private message
Dexter2004
Tux's lil' helper
Tux's lil' helper


Joined: 23 Jul 2004
Posts: 123

PostPosted: Thu Oct 28, 2004 3:34 pm    Post subject: Reply with quote

muito obrigado...

so mais uma coisa: é possivel procurar um linha num ficheiro e se a linha for encontrada devolver o numero dessa linha?
Back to top
View user's profile Send private message
xef
Guru
Guru


Joined: 20 Jun 2003
Posts: 460
Location: Porto - Portugal

PostPosted: Thu Oct 28, 2004 4:07 pm    Post subject: Reply with quote

Se não houver outra forma podes usar um comando que numera as linhas de um ficheiro (não me lembro o nome), quando o grep apanhar a linha usas o tr para ir buscar a primeira coluna.
Back to top
View user's profile Send private message
fernandotcl
Veteran
Veteran


Joined: 20 Nov 2003
Posts: 1396
Location: Sao Paulo, Brazil

PostPosted: Thu Oct 28, 2004 10:02 pm    Post subject: Reply with quote

Dexter2004 wrote:
é possivel procurar um linha num ficheiro e se a linha for encontrada devolver o numero dessa linha?

Sim, você pode fazer, por exemplo, um cat -n:

Code:
cat -n | grep <...> | awk '{print $1}'

_________________
RTFM!
Back to top
View user's profile Send private message
Dexter2004
Tux's lil' helper
Tux's lil' helper


Joined: 23 Jul 2004
Posts: 123

PostPosted: Fri Oct 29, 2004 12:18 am    Post subject: Reply with quote

muito obrigado...
Back to top
View user's profile Send private message
fernandotcl
Veteran
Veteran


Joined: 20 Nov 2003
Posts: 1396
Location: Sao Paulo, Brazil

PostPosted: Fri Oct 29, 2004 1:02 am    Post subject: Reply with quote

Dexter2004 wrote:
Porque é que quando faço numa linha de comandos
Code:

head -n 5 nome_do_ficheiro >> novo_ficheiro

fica tudo bem
mas quando faço num script
Code:
 
echo `head -n 5 nome_do_ficheiro >> novo_ficheiro`

fica tudo na mesma linha..

Eu acho que o echo ignora quebras de linha sem uma determinada opção. Em todo caso, bastaria fazer "head -n 5 <arquivo1> >> <arquivo2>", mesmo no script.

Pra ver quantas linhas, use o wc. :wink:
_________________
RTFM!
Back to top
View user's profile Send private message
Dexter2004
Tux's lil' helper
Tux's lil' helper


Joined: 23 Jul 2004
Posts: 123

PostPosted: Fri Oct 29, 2004 1:06 am    Post subject: Reply with quote

ja tinha visto :D por isso é que tinha editado o post.

mas de qualquer maneira mais uma vez muito obrigado...
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Portuguese All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum