Use awk seen
se você não quiser classificar o arquivo:
$ awk '!seen[$0]++' a.txt b.txt
foo
bar
foobar
line
by
Qual é a maneira mais rápida de mesclar as diferentes linhas de arquivos? Por exemplo, eu tenho dois arquivos:
a.txt:
foo
bar
foobar
b.txt
foo
foobar
line
by
bar
Eu gostaria de obter a seguinte saída:
foo
bar
foobar
line
by
Existe alguma maneira rápida de mesclar arquivos como o exemplo acima? (A ordem das linhas não é importante)
$ sort -u a.txt b.txt
bar
by
foo
foobar
line
Isso ordenaria o conteúdo (combinado) dos dois arquivos, removendo as linhas duplicadas. A desvantagem é que, se uma linha for duplicada em um dos arquivos, isso também será removido.
Para gravar o resultado em c.txt
, use
sort -u -o c.txt a.txt b.txt
ou um redirecionamento padrão
sort -u a.txt b.txt >c.txt
Com base em sua saída desejada, presumo que você queira apenas que os dois arquivos sejam mesclados somente com strings exclusivas.
Nesse caso, cat
, sort
e uniq
podem fazer isso para você:
cat a.txt b.txt | sort | uniq > c.txt
cat
abre o conteúdo de ambos os arquivos
sort
classifica a saída em ordem alfabética
uniq
lista somente strings exclusivas
> c.txt
coloca toda a saída em um novo arquivo c.txt