У меня есть большой файл, состоящий из текстовых полей, разделенных точками с запятой в виде большой таблицы. Это было отсортировано. У меня есть файл меньшего размера, состоящий из тех же текстовых полей. В какой-то момент кто-то связал этот файл с другими, а затем сделал сортировку, чтобы сформировать большой файл, описанный выше. Я хотел бы вычесть строки маленького файла из большого (т. Е. Для каждой строки в маленьком файле, если в большом файле есть совпадающая строка, удалите эту строку в большом файле).
Файл выглядит примерно так
GenericClass1; 1; 2; NA; 3; 4;
GenericClass1; 5; 6; NA; 7; 8;
GenericClass2; 1; 5; NA; 3; 8;
GenericClass2; 2; 6; NA; 4; 1;
и т.д
Есть ли быстрый классный способ сделать это или мне нужно использовать awk?
источник
-x
опцией было бы лучше , если бы строка в меньшем файле оказалась для меня подстрокой другой строки в главном файле. Кроме того, вполне возможно, что ответ @ UlrichSchwarz будет быстрее.comm
твой друг:(
comm
вероятно, будет иметь преимущество в производительности по сравнениюgrep
с учетом сортировки.)Например:
источник
comm -1 -3 file.txt bigfile.txt > newbigfile.txt
comm -1 -3 <(sort BAD.txt GOOD.txt) <(sort FILES.txt)