Pular para o conteúdo

Organizar registos em ficheiro txt

Responder tópico
  • Denunciar
  • Indicar

1. Organizar registos em ficheiro txt

Enviado em 14/10/2017 - 11:26h

Olá,

Pretendo juntar e ordenar a seguinte lista de maneira a que o resultado seja assim:

4324254 /path/home/qwert.pdf
3243255 /jsdf/sfddf/poiuy.pdf
3432423 /path/ldksdfsdf/qwert.pdf
3545454 /path/85sdf/poiuy.pdf


Resultado:

4324254 /path/home/qwert.pdf
3432423 /path/ldksdfsdf/qwert.pdf

3243255 /jsdf/sfddf/poiuy.pdf
3545454 /path/85sdf/poiuy.pdf


O algoritmo que estou a pensar será o seguinte:
1-Identificar todas as linhas onde no final tenho o mesmo nome no meio do último / e .pdf;
2-Junta essas linha em blocos;

Estou um pouco confuso sobre quais programas devo utilizar. Estou a pensar utilizar o uniq. Penso que o grep vou ter que utilizar, pois preciso de identificar um padrão.
Talvez a ordem seja:
1-grep para identificar o padrão - (tenho que fazer uso das expressões regulares);
2-sort para organizar os registos e facilitar a vida ao uniq;
3-aplicar o uniq para separar os repetidos por blocos;

Obrigado

Responder tópico

2. Re: Organizar registos em ficheiro txt

Enviado em 14/10/2017 - 11:53h

Ordenação de acordo com final das linhas:
sort -t/ -k4 arquivo 

ou
rev arquivo | sort | rev 

3. Re: Organizar registos em ficheiro txt

Enviado em 14/10/2017 - 12:01h

Ryuk escreveu:

Ordenação de acordo com final das linhas:
sort -t/ -k4 arquivo 

ou
rev arquivo | sort | rev 
O parametro -t/ é para identificar o -field-separator. Neste caso é a barra /
-k é a --key=keydef. O que o valor 4 faz?

O rev não conhecia. Mas o que ele faz é inverter a ordem dos caracteres de cada linha, certo?

Obrigado

4. Re: Organizar registos em ficheiro txt

Enviado em 14/10/2017 - 13:21h

-t/ = separa colunas por /
-k4 = quarta coluna
rev = inverte a ordem dos caracteres

5. Re: Organizar registos em ficheiro txt

Enviado em 14/10/2017 - 13:55h

E se tiver situações com 5 ou 6 colunas misturadas com 4 colunas! Como faço?


6. Re: Organizar registos em ficheiro txt

Enviado em 14/10/2017 - 14:03h

ede_linux escreveu:

E se tiver situações com 5 ou 6 colunas misturadas com 4 colunas! Como faço?

Neste caso, melhor usar o "rev" mesmo.

7. Re: Organizar registos em ficheiro txt

Enviado em 14/10/2017 - 14:07h

Assim faço mirro da string e organizo pela primeira coluna, certo?

8. Re: Organizar registos em ficheiro txt

Enviado em 14/10/2017 - 14:21h

Resulta!

Fica tudo junto. Como faço para que seja adicionada uma linha vazia entre blocos de registos iguais?
Estive a ver se o uniq tem o parametro -k, mas não tem!

9. Re: Organizar registos em ficheiro txt

Enviado em 14/10/2017 - 15:52h

ede_linux escreveu:

Olá,

Pretendo juntar e ordenar a seguinte lista de maneira a que o resultado seja assim:

4324254 /path/home/qwert.pdf
3243255 /jsdf/sfddf/poiuy.pdf
3432423 /path/ldksdfsdf/qwert.pdf
3545454 /path/85sdf/poiuy.pdf


Resultado:

4324254 /path/home/qwert.pdf
3432423 /path/ldksdfsdf/qwert.pdf

3243255 /jsdf/sfddf/poiuy.pdf
3545454 /path/85sdf/poiuy.pdf


O algoritmo que estou a pensar será o seguinte:
1-Identificar todas as linhas onde no final tenho o mesmo nome no meio do último / e .pdf;
2-Junta essas linha em blocos;

Estou um pouco confuso sobre quais programas devo utilizar. Estou a pensar utilizar o uniq. Penso que o grep vou ter que utilizar, pois preciso de identificar um padrão.
Talvez a ordem seja:
1-grep para identificar o padrão - (tenho que fazer uso das expressões regulares);
2-sort para organizar os registos e facilitar a vida ao uniq;
3-aplicar o uniq para separar os repetidos por blocos;

Obrigado
Boa tarde Ede.
Segue sugestão:
for ARQ in $(awk -F '[ \/]' '{print $NF}' ARQUIVOS.txt |sort -r|uniq);do
grep "$ARQ$" ARQUIVOS.txt
echo -e ""
done

4324254 /path/home/qwert.pdf
3432423 /path/ldksdfsdf/qwert.pdf

3243255 /jsdf/sfddf/poiuy.pdf
3545454 /path/85sdf/poiuy.pdf

Att.:
Marcelo Oliver

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder