Editar arquivos de texto sem uso do sed ou awk em shell? [Resolvido]

Iniciado por rudregues, 02 de Março de 2013, 00:13

tópico anterior - próximo tópico

rudregues

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.
Gentoo — Controle total sobre o sistema.

irtigor

É possível. Exemplos:


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



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



# Procura e substitui todas as ocorrências de bash por zsh
sed -i "s/bash/zsh/g" nomeEshell.txt



# 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

rudregues

#2
Obrigado pela ajuda irtigor. É muito bom saber que também dá pra fazer certas operações de outras formas.


Citação de: irtigor online 02 de Março de 2013, 10:36
http://wiki.bash-hackers.org/syntax/pe
Esse link tá dando "Tempo limite atingido", você acessou agora há pouco? EDIT: tá funcionando agora
Gentoo — Controle total sobre o sistema.