сравнить два файла, игнорируя 1-й столбец и номер строки печати

как я могу напечатать номер разности строк, игнорируя 1-й столбец для разделенных разделов файлов?

example-compare File 1 vs File2, игнорируя первый столбец и строку печати. для differnce запись присутствует в файле 2.

В файле1:

user1 fistname Lastnamename user2 Johnny Depp user3 Tom Cruise user4 Leonardo DiCaprio user5 Sylvester Stallone 

а также

В файле2:

 user10 fistname Lastnamename user2 Johnny Depp user30 Tom' Cruise user4 Nicolas Cage user50 Sylvester Stallone 

ожидаемый результат: – разница в файле2 для номера строки 3,4

Размер файла примечаний, который нужно сравнить, находится в GB, а файл разделен на вкладку

4 Solutions collect form web for “сравнить два файла, игнорируя 1-й столбец и номер строки печати”

Попробуйте с этим кодом, не знаете, будет ли это работать, поскольку у меня недостаточно данных:

 diff --unchanged-line-format="" --old-line-format="" --new-line-format=":%dn: %L" file1 file2 | sed 1d | cut -d':' -f2 |tr '\n' ','|sed 's/,$//g' 

Это может ответить на ваш вопрос:

 awk 'NR==FNR{++a[$2,$3];next} {line++;if(!(a[$2,$3])){print line}}' record1 record2 

Объяснение:

 FNR==NR 

Когда у вас есть два (или более) входных файла для awk , FNR вернется к 1 в первой строке следующего файла, тогда как NR будет продолжать увеличиваться с того места, где он был остановлен. FNR==NR мы по существу проверяем, выполняем ли мы в данный момент первый файл.

 ++a[$2,$3] 

Если мы разберем первый файл (см. Выше), создайте ассоциативный массив с первым полем $ 2 и вторым полем $ 3, так как ключ и пост увеличивают значение на 1. Это существенно позволяет нам создать список «замеченных».

 next 

Эта команда говорит awk не обрабатывать дальнейшие команды и читать в следующей записи и начинать заново. Мы делаем это, потому что file1 предназначен только для установки ассоциативного массива

 !(a[$2,$3]) 

Эта строка выполняется только тогда, когда FNR == NR является ложным, то есть мы не разбираем файл1 и, следовательно, должны анализировать файл2. Затем мы используем первое поле $ 1 и второе поле $ 2 файла file2 как ключ к индексу в наш 'замеченный' список, созданный ранее. Если возвращаемое значение равно 0, это означает, что мы не видели его в файле1, и поэтому мы должны напечатать эту строку. И наоборот, если значение отличное от нуля, мы видели его в файле1, и поэтому мы не должны печатать его значение. Обратите внимание, что! (A [$ 2, $ 3]) эквивалентно! (A [$ 2, $ 3]) {print}, потому что действие по умолчанию, когда оно не указано, – это печать всей строки.

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

 diff <(cut -f2 -d$'\t' file1) <(cut -f2 -d$'\t' file2) 

Выход будет

 3,4c3,4 < Tom < Leonardo --- > Tom' > Nicolas 

Если вы относитесь к более повторяющимся записям, вы можете использовать вышеприведенную команду с sort -u для удаления дубликата, прежде чем искать diff из другого файла. Команда будет

 diff <(cut -f2 -d$'\t' file1|sort -u) <(cut -f2 -d$'\t' file2|sort -u) 
 $ echo -n 'difference in file2 is for line number ';diff --unchanged-line-format="" --old-line-format="" --new-line-format="%dn " <(tail +2 file1|unexpand -a|cut -f2-) <(tail +2 file2|unexpand -a|cut -f2-)|grep -o "[0-9]*" | while read i;do echo $((i+1));done|paste -sd, difference in file2 is for line number 3,4 
  • Если у меня есть два жестких диска, может ли жесткий диск 1 быть / dev / sda на одной загрузке, будучи / dev / sdb на другой загрузке?
  • Как использовать устройство Peak PCAN-USB для сохранения CAN-трассировки с использованием модулей ядра 4.4?
  • ls -l вывод в каталоге / dev системы Unix / Linux
  • могу ли я использовать lirc, используя i / r на моем rtl2832U-канале, как обычный или отдельный порт i / r?
  • Что такое FTP Loopback в unix?
  • Отслеживать, кто переместил нашу папку в случайном каталоге
  • Определите, какая версия бинарника выполняется в настоящий момент
  • информация о процессорах в Linux
  • Установка Gentoo
  • Как найти скорость процессора на Linux с дросселированием
  • Каково состояние стандартной базы Linux?
  • Interesting Posts

    Зеркальные дисплеи на экране входа в Mint 15

    Почему я не могу установить несколько версий разделяемой библиотеки?

    Сценарий оболочки с циклом for и "array"

    Графическое исправление ошибок? Исправленный файл op оставил тень «почти drag-n-drop» файла, как его удалить?

    Предоставление переменных среды для последующих процессов началось в скрипте init.d

    Транспортировка непрерывного потока в grep в качестве поискового запроса для поиска в файле

    Очистить разрешение setuid с помощью числового режима

    Exundelete не может восстановить файл

    FFMPEG – Интерполировать рамки или добавить размытие изображения

    Команда для получения id-порта no: – & last three string?

    Мостовая сеть, взаимодействующая с некоторыми доменами интрасети

    Ошибка: не удалось найти шаблон распространения для Kali / Kali-Rolling

    Создание изображений AMD64 + mac Linux

    Гость KVM как шлюз по умолчанию для мостовой сети

    Замена команды: / dev / stdin: Отказано в разрешении

    Linux и Unix - лучшая ОС в мире.