Auxilio em script

1. Auxilio em script

Edson
krynhells

(usa Debian)

Enviado em 18/12/2012 - 15:30h

Galera, o lcavalheiro me ajudou em um script e o tópico foi encerrado, só que esse script esta ocorrendo um erro na linha:

for i in {1..22}; do cat arquivosemprimeiralinha.csv | cut -d',' -f$i > coluna$idoarquivo.txt

O problema é que não acontece nada, aparece apenas um > como se eu fosse inserir mais algum comando. Sabem me dizer o que falta no comando?

Obrigado

Segue explicação do lcavalheiro no tópico anterior:

O jeito mais prático é você separar o arquivo em várias colunas automaticamente. Pra isso, vamos ser pilantras e usar um comando simples para separar o arquivo em
várias colunas. Seja n o número total de colunas em seu arquivo (sim, você precisa saber isso de antemão ;-)

$ cat arquivooriginal | sed "1d" > arquivosemprimeiralinha
$ for i in {1..n}; do cat arquivosemprimeiralinha | cut -d',' -f$i > coluna$idoarquivo.txt

No lugar da vírgula em cut -d',' use o caractere delimitador de coluna usado no arquivooriginal. Agora você vai ter n arquivos, cada arquivo correspondendo a uma coluna. Edite os arquivos das colunas que lhe interessam editar como explicado anteriormente, e junte todos as colunas (editadas ou não) conforme explicado anteriormente.


  


2. Re: Auxilio em script

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 26/12/2012 - 12:57h

awk -F',' 'NR>1{ printf tolower($1) FS; for (x=2; x<=NF ;x++) if (x == NF) printf $x; else printf $x FS; printf "\n"; }' arquivooriginal > arquivofinal


AWK

-F',' => Field Separator (separador de campos) do arquivo será a virgula
NR>1 => pega todos os registros maior que 1, ou seja, ignora a primeira linha
printf tolower($1) => pega a coluna 1 e coloca em minuscula (lowercase)
FS => imprime um Field Separator, no caso a virgula
for (x=2; x<=NF ;x++) => pega as colunas 2 para frente (que voce não quer em lower case) e passa para o if
if (x == NF) printf $x; else printf $x FS => aqui a idéia é se não for a ultima coluna imprime a coluna + virgula , se for a ultima não coloca a virgula
printf "\n" => quebra de linha

Poderia ser também:
awk -F',' 'NR>1{ printf tolower($1) FS; for (x=2; x<NF ;x++) printf $x FS; printf $NF "\n"; } arquivooriginal > arquivofinal


3. Re: Auxilio em script

Edson
krynhells

(usa Debian)

Enviado em 26/12/2012 - 13:46h

Funcionou... parabéns... achei complexo mas o que importa é que funcionou.

Existe algum modo de incluir o comando abaixo para retirar os acentos da quarta coluna?

sed "y/áÁàÀãÃâÂéÉêÊíÍóÓõÕôÔúÚçÇ/aAaAaAaAeEeEiIoOoOoOuUcC/"

Muito obrigado, desde já.

Edson


4. Re: Auxilio em script

Edson
krynhells

(usa Debian)

Enviado em 02/01/2013 - 15:23h

Galera, alguém pode ajudar... só falta isso, preciso incluir o comando sed para retirar os acentos de apenas uma coluna pré-definida.

Obrigado,


krynhells escreveu:

Funcionou... parabéns... achei complexo mas o que importa é que funcionou.

Existe algum modo de incluir o comando abaixo para retirar os acentos da quarta coluna?

sed "y/áÁàÀãÃâÂéÉêÊíÍóÓõÕôÔúÚçÇ/aAaAaAaAeEeEiIoOoOoOuUcC/"

Muito obrigado, desde já.

Edson









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts