Содержание файла Diffing

У меня есть два файла простого текста, каждый файл содержит список строк, отсортированных в алфавитном порядке с одной строкой на строку. Я хочу к разности файлы и имею вывод всех строк, которые существуют только в file2.

Preferabbly я хочу, чтобы операция была возможна без любых сторонних инструментов, или с минимумом установок инструментов, который "нормален" для нахождения в среде командной строки окон, такой как GNU Diffutils, Powershell, и т.д. Вывод должен быть в текстовой форме (файл или как вывод командной строки).

Пример:

File 1 contents:
A
C
D

File 2 contents:
A
B
C
E

Result wanted:
B
E
1
задан 11.06.2010, 16:33

2 ответа

comm -13 file_a file_b

(-13 -1 -3)


diff a b | grep "^>"
diff a b | sed -n "/^>/ s/^> //p"

Можно получить очень минимальный набор инструментов от UnxUtils - устаревший, да, но достаточно для этого.

2
ответ дан 12.12.2019, 08:16

В Windows PowerShell (порт для прямого обращения diff/grep комбинации grawity):

Compare-Object (Get-Content file1) (Get-Content file2) |
    Where-Object { $_.SideIndicator -eq '=>' } |
    Select-Object -ExpandProperty InputObject

Это может быть сокращено к:

diff (gc file1) (gc file2) | ?{$_.SideIndicator -eq '=>'} | %{$_.InputObject}

или перенесенный в функцию, если Вам нужен он чаще, чем однажды.

4
ответ дан 12.12.2019, 08:16

Теги

Похожие вопросы