
raserafim
(usa Slackware)
Enviado em 17/11/2017 - 13:03h
consegui uma alternativa viável utilizando-se basicamente do comando "uniq".
o "uniq" não faz tudo sozinho; é necessário alguns processos.
os passos se constituem em :
- juntar o conteúdo dos dois arquivos em um único arquivo;
- é necessário que, na junção, seja adicionado uma coluna "fictícia" para os dados do arquivo que tem apenas uma coluna.
- é necessário adicionar algo no final da linha do arquivo que tem apenas uma coluna. (necessário para que, ao utilizar o comando "soft", As linhas sejam passadas de modo que aqui tem a coluna fictícia fique embaixo da sua correspondente linha do outro arquivo)
- dar um sort;
- retirar o algo adicionado no final da linha;
- utilizar o "uniq -d -f1"
segue o código:
cat 2.txt > 3tmp.txt
echo >> 3tmp.txt #necessário para que o próximo "cat" não continue da última linha do cat anterior
cat 1.txt | sed 's/^/.... /g' | sed 's/$/:more:/g' >> 3tmp.txt #acrescenta o conteúdo do arquivo.. e acrescenta uma coluna de pontos.. e acrescenta um texto no final (:more:) para que na ordenação essas linhas fiquem a baixo das linhas correspondentes do arquivo anterior
cat 3tmp.txt | sort -k 2 | sed 's/:more://g' | uniq -d -f1 > 3.txt #ordena e retira o texto acrescentado ao final da linha (:more:)