-1

У меня есть два файла, и формат файлов: переменная = значение или # или # переменная. Значения всех переменных либо не установлены, да, мод Я хочу скопировать все записи из этих файлов в другой файл и сохранить только уникальные записи. В случае, если оба файла имеют одну и ту же переменную, но с разными значениями. Я хотел бы скопировать те с = мод. Как этого добиться, используя скрипт awk, sed, grep или bash?

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

3 ответа3

0

Попробуйте использовать этот сценарий awk :

NR==FNR { data[$1] = $2; next; }
!/#/ {
    if ($1 in data) {
        if ($1 == "mod") {
            print $0;
        } else {
            print $1 "=" data[$1];
        }
    } else {
        print $0;
    }
}

Назовите это так:

awk -f script -F= file1 file2
0

Perl один лайнер

файл один:
1
2
3

файл два:
1
4
3

Уникальная линия печати
perl -lne 'print if ++$n{ $_ } == 1 ' file_one.txt file_two.txt

Или же

perl -lne 'print unless ++$n{ $_ } ' file_one.txt file_two.txt

выход
1
4
3
2

0

Создайте программу на любом языке, к которому вы привыкли. Логика:

While not EOF (file1)
{
    Read line from file1
    While not EOF (file2)
    {
        Read line from file2
        If l-file1 = l-file2
        {
            do nothing
        }
        Else
        {
            output unique value
        }
    }
}

Это позволит сравнить каждую строку файла file1 с каждой строкой файла file2 (вместо сравнения строка-строка).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .