Autor Tópico: Editar arquivos de texto sem uso do sed ou awk em shell? [Resolvido]  (Lida 3338 vezes)

Offline rudregues

  • Usuário Ubuntu
  • *
  • Mensagens: 388
  • Fight!
    • Ver perfil
    • Dieta Paleo
Pessoal, queria saber se tem como eu criar um script em shell de modo que ele crie algum arquivo ou acesse um existente e eu possa fazer alterações complexas. Por exemplo, se eu faço ls -a > arq.txt e depois ls -la > arq.txt no primeiro comando ele criou o arquivo arq.txt adicionando a saída de ls -a e no segundo ele editou, acrescentando o resultado do comando ls -la. É uma alteração, digamos simples. Sei que com o sed e awk, dá pra fazer algumas coisas mais complexas, como substituir alguns caracteres por outros ou então separar as palavras por espaços. O que eu quero saber é até que ponto eu posso editar esses arquivos sem o uso do sed e do awk, ou seja, remover palavras de determinadas linhas, acrescentar em outras etc.

Não sei se fui claro na minha pergunta, ela é meio "filosófica", mas se alguém puder responder com algum exmplo melhor ainda.
« Última modificação: 02 de MAR?O de 2013, 11:51 por rudregues »
Gentoo — Controle total sobre o sistema.

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Editar arquivos de texto sem uso do sed ou awk em shell?
« Resposta #1 Online: 02 de MAR?O de 2013, 10:36 »
É possível. Exemplos:

Código: [Selecionar]
# Pega o primeiro campo e o ultimo, usando : como separador
awk -F: '{printf "%s %s\n",$1,$NF}' /etc/passwd > nomeEshell.txt

Código: [Selecionar]
# Equivalente em bash
while read -r line; do
printf "%s %s\n" "${line%%:*}" "${line##*:}" >> nomeEshell.txt
done < /etc/passwd

Código: [Selecionar]
# Procura e substitui todas as ocorrências de bash por zsh
sed -i "s/bash/zsh/g" nomeEshell.txt

Código: [Selecionar]
# Equivalente em bash
cp nomeEshell.txt tmp.txt
rm nomeEshell.txt
while read -r line; do
printf "%s\n" "${line//bash/zsh}" >> nomeEshell.txt
done < tmp.txt

http://wiki.bash-hackers.org/syntax/pe

Offline rudregues

  • Usuário Ubuntu
  • *
  • Mensagens: 388
  • Fight!
    • Ver perfil
    • Dieta Paleo
Re: Editar arquivos de texto sem uso do sed ou awk em shell?
« Resposta #2 Online: 02 de MAR?O de 2013, 11:04 »
Obrigado pela ajuda irtigor. É muito bom saber que também dá pra fazer certas operações de outras formas.


http://wiki.bash-hackers.org/syntax/pe
Esse link tá dando "Tempo limite atingido", você acessou agora há pouco? EDIT: tá funcionando agora
« Última modificação: 02 de MAR?O de 2013, 11:51 por rudregues »
Gentoo — Controle total sobre o sistema.