Enviado em 29/03/2016 - 18:19h
#!/bin/bash
> arq.temp
sort arq|uniq -c|sed 's/^[ ]\+//' >> arq.temp
NL=$(awk 'END {print NR}' arq.temp)
for ((L=1;L<=$NL;L++));do
if (($L>1));then
LM=$((L-1))
LINANT=$(sed -n "$LM"p arq.temp)
read C1an C2an C3an C4an <<< "$LINANT"
LINATU=$(sed -n "$L"p arq.temp)
read C1at C2at C3at C4at <<< "$LINATU"
#SE C2 LINHA ATUAL = C2 LINHA ANTERIOR
if [ "$C2at" = "$C2an" ];then
for ((i=0;i<$C1at;i++));do
echo -n "$C3at $C4at "
done
else
echo -e "\n$C2at"
for ((i=0;i<$C1at;i++));do
echo -n "$C3at $C4at "
done
fi
else
LINATU=$(sed -n "$L"p arq.temp)
read C1at C2at C3at C4at <<< "$LINATU"
echo -e "\n$C2at"
for ((i=0;i<$C1at;i++));do
echo -n "$C3at $C4at "
done
fi
done
--------------------------------------------------------------------------------------------------------
EDITADO em 29/03/2016 as 19:50h
Pensando um pouquinho, deu para reduzir o código . . . :)
#!/bin/bash
NL=$(awk 'END {print NR}' $1)
for ((i=1;i<=$NL;i++));do
if egrep -q "\b$i\b" $1;then
echo -e "\n$i"
awk '{if($1=='$i')printf "%s %s " ,$2,$3}' $1;echo
fi
done;echo
cat arq
1 A A
1 A A
1 A A
1 A A
2 T T
2 T T
2 T T
2 T T
2 T T
2 T T
2 T T
2 A T
3 B B
3 B B
--------------------------------------------------------------------------------------------------------
Se resolver, marque como resolvido, por favor.
Gostando da resposta, marque-a como MELHOR, dessa forma, ganho uns pontinhos,
o que incentiva a continuar colaborando, ajudando, participando e compartilhando conhecimentos . . . :)
Att.:
Marcelo
Pra quem contribui com artigos e dicas (0)
Arch Linux - Guia para Iniciantes (5)
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
O Que Fazer Após Instalar Ubuntu 25.04
O Que Fazer Após Instalar Fedora 42
Debian 12 -- Errata - Correções de segurança
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Alguém poderia me ajudar a escolher peças pra montar um desktop? (19)
Pra quem contribui com artigos e dicas (0)