comm não está funcionando para encontrar palavras únicas no arquivo1 de dois arquivos

0

Eu tenho dois arquivos de texto em que eu tenho que usar o comando comm para extrair todas as palavras únicas do arquivo 1. Então, apenas aqueles que não estão no arquivo 2. Fui solicitado a usar o comando comm (não diff nem join ).

Eu tentei muitas coisas, como comm -32 file1 file2 , mas isso retorna todas as palavras do arquivo 1.

    
por hdb004 29.10.2013 / 10:04

1 resposta

3

comm espera arquivos classificados onde cada palavra deve estar em uma linha (são as linhas completas que são comparadas).

Então é

(export LC_ALL=C
comm -23 <(grep -Po '\S+' file1 | sort) <(grep -Po '\S+' file2 | sort))

(assumindo o GNU grep com suporte a PCRE e uma substituição de processo de suporte ao shell como ksh93 , zsh ou bash ).

Corrigindo a localidade para C para executar uma comparação de byte para byte para sort e comm .

    
por 29.10.2013 / 11:12

Tags