comm -13 file_a file_b
( -13
é -1
-3
)
diff a b | grep "^>"
diff a b | sed -n "/^>/ s/^> //p"
Você pode obter um conjunto de ferramentas muito pequeno de UnxUtils - desatualizado, sim, mas suficiente para este.
Eu tenho dois arquivos de texto simples, cada arquivo contém uma lista de strings classificadas alfabeticamente com uma string por linha. Eu quero diferenciar os arquivos e ter uma saída de todas as strings que existem apenas no arquivo2.
Preferencialmente, eu quero que a operação seja possível sem ferramentas de terceiros, ou com um mínimo de instalações de ferramentas que sejam "normais" em um ambiente de linha de comando do Windows, como GNU Diffutils, Powershell, etc. deve estar em formato de texto (arquivo ou como saída de linha de comando).
Exemplo:
File 1 contents:
A
C
D
File 2 contents:
A
B
C
E
Result wanted:
B
E
comm -13 file_a file_b
( -13
é -1
-3
)
diff a b | grep "^>"
diff a b | sed -n "/^>/ s/^> //p"
Você pode obter um conjunto de ferramentas muito pequeno de UnxUtils - desatualizado, sim, mas suficiente para este.
No Windows PowerShell (porta direta da combinação diff / grep do grawity ):
Compare-Object (Get-Content file1) (Get-Content file2) |
Where-Object { $_.SideIndicator -eq '=>' } |
Select-Object -ExpandProperty InputObject
Isso pode ser encurtado para:
diff (gc file1) (gc file2) | ?{$_.SideIndicator -eq '=>'} | %{$_.InputObject}
ou envolto em uma função se você precisar mais do que uma vez.