Содержание Substract одного текстового файла от содержания другого текстового файла на Linux

У меня есть два текстовых файла на Linux. Каждый содержит список действительных идентификаторов. Например:

abcd
efgh
ijkl
etc.

Другой содержит список недопустимых идентификаторов. Но, некоторые из них также появляются в списке действительных идентификаторов в этом примере "efgh":

mnop
qrst
efgh
etc.

Как я могу легко создать текстовый файл, который содержит все строки из недопустимого списка, которые не появляются в действительном списке? Таким образом, я хочу закончить с текстовым файлом, который имеет:

mnop
qrst
etc.

Я хотел бы любое некоторое волшебство командной строки Linux некоторого умного обмана Vim.Заранее спасибо!

6
задан 09.12.2015, 14:04

3 ответа

Я думаю, что коммуникация может помочь Вам сделать то, что Вы хотите.

Это - менее известный инструмент командной строки, который должен присутствовать в большинстве систем Linux.

9
ответ дан 07.12.2019, 15:53

Принятию Вас назвали файлы valid и invalid, можно отсортировать их:

вид, допустимый> допустимо отсортированный; вид, недопустимый> недопустимо отсортированный

затем сравните:

разность, допустимо отсортированная недопустимо отсортированный

Вывод будет (принятие Ваших данных в качестве примера):

1d0
< abcd
3c2,3
< ijkl
---
> mnop
> qrst

Материал с' <' находится только в первом файле, материале с'>' только в (недопустимом) втором.

Таким образом diff valid-sorted invalid-sorted |grep '^>' должен дать Вам строки, появляющиеся в недопустимом, но не в допустимом.

Снятие продвижения'>' оставляют как осуществление для читателя ;-).

Протест: Это не будет работать, если Ваши входные файлы на самом деле будут содержать'>' в начале строки. Необходимо будет сделать некоторых обманывающих затем...

0
ответ дан 07.12.2019, 15:53

У меня есть своя собственная утилита для этого, которое полагается на другого; они также работают над неотсортированным входом. Основное использование

except file1 file2 > file2-except-any-lines-in-file1
0
ответ дан 07.12.2019, 15:53

Теги

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