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 valores entre colunas de linhas difere


From: phfbettega
Subject: Re: [shell-script] Comparações de valores entre colunas de linhas diferentes
Date: Wed, 20 Jul 2016 12:08:09 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0

Olá Darlon, uma solução em bash
Abraços Paulo Bettega

i=0;while read linha;do
f1=$(cut -d' ' -f1 <<<"$linha")
for ((;i<f1;i++)){ echo $i;}
echo "$linha";let i++
done <<<'0 abc
2 def
5 ghi
6 jkl
10 mno'
0 abc
1
2 def
3
4
5 ghi
6 jkl
7
8
9
10 mno

On 20-07-2016 02:50, Darlon Vasata address@hidden [shell-script] wrote:


Olá pessoal.


Tenho aqui a seguinte situação, e acredito que ela possa ser implementada 
usando shell/awk.

A entrada é um arquivo com duas colunas: a primeira contém um inteiro (ordenado 
e não-repetido) e a segunda
coluna possui um valor qualquer, que deve ser repetido na saída.

Exemplo:

Entrada:

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


Saída desejada:
0 abc
1
2 def
3
4
5 ghi
6 jkl
7
8
9
10 mno





Ou seja, a saída na primeira coluna é uma lista de inteiros em sequencia.

Implementei da seguinte forma:


#obtém o último número da primeira coluna na entrada
$ ULTIMO=$(tail -n 1 entrada.txt | awk '{print $1}')
#Produz a saída
$ paste <(seq 0 $ULTIMO ) entrada.txt |  awk 'BEGIN{X=0} {while(X<$2){print X; 
X++};{ print $2,$3; X++} }' |
uniq > saida.txt


Esta implementação está ok. vejam a saída:

$ cat saida.txt
0 abc
1
2 def
3
4
5 ghi
6 jkl
7
8
9
10 mno

Gostaria de realizar a comparação de valores em diferentes linhas de uma outra 
forma, principalmente para
eliminar o while do awk...

Me refiro a comparação em diferentes linhas porque o código que utilizei tem o 
seguinte trecho:
$ paste <(seq 0 $ULTIMO ) entrada.txt
0       0 abc
1       2 def
2       5 ghi
3       6 jkl
4       10 mno
5
6
7
8
9
10

e "movimentar" os valores da segunda coluna é a parte que gostaria de saber se 
há uma forma melhor de implementar.


Alguma sugestão de implementação sem utilizar o while do awk?

[ ]

Darlon





--------------------------------------------------------------------------------------------------------------
Enviado por: Darlon Vasata <address@hidden>
--------------------------------------------------------------------------------------------------------------


reply via email to

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