Сравните два .csv файла

Об/мин и архивы deb довольно хороши и удобны, но возможности - Вы, не получит официальное ядро тот путь, но исправленная версия; измененные источники ядер поставки большинства дистрибутивов по многим причинам (и может включать бэкпорты bugfix, дополнительные двоичные микропрограммные блобы, код, объединенный от третьих лиц, и так далее).

Я настоятельно рекомендую, чтобы Вы получили исходное ядро tarballs на официальном сайте и сохранить некоторую пропускную способность и время, можно получить большинство незначительных выпусков через патчи.

4
15.02.2015, 13:24
4 ответа

Я предполагаю, что ваши файлы CSV являются чем-то вроде:

File1

123123,,
222333,,

File2

111222,Jones,Sally
111333,Johnson,Roger
123123,Doe,John
444555,Richardson,George
222333,Smith,Jane
223456,Alexander,Philip

Вы можете попробовать использовать команду присоединиться к команде , например:

# join -t, -v 2 <(sort file1) <(sort file2)
111222,Jones,Sally
111333,Johnson,Roger
223456,Alexander,Philip
444555,Richardson,George

Больше информации о команде можно найти здесь: Человек присоединяется к

join [OPTION]... FILE1 FILE2

-t CHAR
    use CHAR as input and output field separator 
-v FILENUM
    like -a FILENUM, but suppress joined output lines 
3
27.01.2020, 20:52

Вы также можете попробовать следующий раствор Python2:

#!/usr/bin/env python2
import csv
with open('file_1') as f1:
    file_1_list = [line[0] for line in csv.reader(f1)]
with open('file_2') as f2:
    for line in csv.reader(f2):
        if line[0] not in file_1_list:
            print ' '.join(line)
1
27.01.2020, 20:52

Попробуйте следующее:

awk 'BEGIN{FS=","};FNR==NR{a[$1];next};!($1 in a)' file1 file2 > file3
2
27.01.2020, 20:52

Добавьте -F ',' , который сообщает awk о наличии разделителя запятой или, если вы используете | . используйте -F '|'

, чтобы ваш скрипт теперь выглядел так

awk -F',' 'FNR==NR{a[$1];next};!($1 in a)' file1 file2 > file3
0
27.01.2020, 20:52

Теги

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