shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Comparações de valo res entre colunas de linhas difer


From: Julio C. Neves
Subject: Re: [shell-script] Comparações de valo res entre colunas de linhas diferentes
Date: Thu, 21 Jul 2016 09:47:32 -0300

Método KISS, veja:

$ cat arq
0 abc
2 def
5 ghi
6 jkl
10 mno

$ seq 0 10 | cat arq - | sort -nu
0 abc
1
2 def
3
4
5 ghi
6 jkl
7
8
9
10 mno

Porém o 10 deve ser substituído por:

$ seq 0 $(tail -1 arq | cut -f1 -d' ') | cat arq - | sort -nu
0 abc
1
2 def
3
4
5 ghi
6 jkl
7
8
9
10 mno

Abcs,
Julio
@juliobash

P
róximos cursos de Shell
Cidade         Local Período
São Paulo 4Linux 25
-29/07
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 21 de julho de 2016 09:26, Darlon Vasata address@hidden [shell-script] <address@hidden> escreveu:
 

Olá Itamar. Obrigado pela observação.

Mas olha só:

$ cat entrada.txt 
0 abc
2 def
5 ghi
6 jkl
10 mno

Vou tirar o sort do seq:

$ join -a 1 <( seq 0 $ULTIMO  ) <(sort entrada.txt) | sort -n
join: /dev/fd/63:11: is not sorted: 10
0 abc
1
2 def
3
4
5 ghi
6 jkl
7
8
9
10


O join me informa que o 10 não estava ordenado. Até onde entendi, a ordenação que ele precisa é a normal, e não a numérica. Desta forma, o 10 deve ser antes do 2.

Na saída, o resultado ficou errado. Deveria aparecer 10 mno no final, e não só 10. Se eu colocar sort -n para entrada.txt, ele diz que os dois parâmetros não estão ordenados, e a saída continua errada. Veja :

$ join -a 1 <( seq 0 $ULTIMO   ) <(sort -n entrada.txt) | sort -n
join: /dev/fd/62:5: is not sorted: 10 mno
join: /dev/fd/63:11: is not sorted: 10
0 abc
1
2 def
3
4
5 ghi
6 jkl
7
8
9
10



Por isso, coloquei o sort depois do seq.


$ join -a 1 <( seq 0 $ULTIMO | sort  ) <(sort entrada.txt) | sort -n
0 abc
1
2 def
3
4
5 ghi
6 jkl
7
8
9
10 mno


[ ]

Darlon


On 21 de jul de 2016, at 09:11, address@hidden [shell-script] <address@hidden> wrote:

Darlon me permita duas críticas: 

Nesse trecho:
$ join -a 1 <( seq 0 $ULTIMO | sort ) <( sort entrada.txt ) | sort -n

sort para uma saída do seq? Isso não precisa!

se o arquivo.txt já estava ordenado como comentou no primeiro e-mail o sort nele é desnecessário, mas se quer fazer isso como garantia o melhor teria sido usar o opção -n nele, e não após o join ligado através de pipe

ou seja:
$ join -a 1 <( seq 0 $ULTIMO ) <( sort -n entrada.txt )

É só uma observação.

[]'s
Itamar




reply via email to

[Prev in Thread] Current Thread [Next in Thread]