Найти группу общих строк в двух файлах
Я использовал команду diff в прошлом. Я столкнулся с ситуацией, в которой у меня не было подсказки, вот некоторые текстовые строки (которые могут быть сохранены в файле)
CONFIG_XEN=y
CONFIG_XEN_PVHVM=y
CONFIG_XEN_MAX_DOMAIN_MEMORY=128
CONFIG_XEN_SAVE_RESTORE=y
CONFIG_XEN_DEBUG_FS=y
CONFIG_SWIOTLB_XEN=y
CONFIG_MICROCODE_XEN=y
CONFIG_XEN_DOM0=y
CONFIG_XEN_PRIVILEGED_GUEST=y
CONFIG_XEN_DOM0_PCI=y
CONFIG_XEN_PCI_PASSTHROUGH=y
CONFIG_PCI_XEN=y
CONFIG_XEN_PCIDEV_FRONTEND=y
CONFIG_XEN_BLKDEV_FRONTEND=y
CONFIG_NETXEN_NIC=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_KBDDEV_FRONTEND=y
CONFIG_HVC_XEN=y
CONFIG_XEN_FBDEV_FRONTEND=y
CONFIG_XEN_BALLOON=y
CONFIG_XEN_SCRUB_PAGES=y
CONFIG_XEN_DEV_EVTCHN=y
CONFIG_XEN_BACKEND=y
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_XEN_BLKDEV_BACKEND=m
CONFIG_XEN_BLKDEV_TAP=m
CONFIG_XEN_BLKBACK_PAGEMAP=m
CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_XEN_PCIDEV_BACKEND_VPCI=y
CONFIG_XENFS=y
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_XEN_SYS_HYPERVISOR=y
CONFIG_XEN_MCE=y
CONFIG_XEN_XENBUS_FRONTEND=y
CONFIG_XEN_GNTDEV=y
CONFIG_XEN_S3=y
CONFIG_ACPI_PROCESSOR_XEN=y
CONFIG_XEN_PLATFORM_PCI=m
Я должен в основном найти только строки выше (не любые другие) в файле.config ядра, который выглядит следующим образом
http://pastebin.com/AEQ6p9Vm Это очень большой файл.
Теперь я понятия не имел, по командам я могу найти записи, которые я впервые упомянул, существуют ли они во втором файле или нет, поэтому я вручную скопировал каждую запись и искал в файле.config, который я упомянул. Я нашел
есть следующие различия
# CONFIG_XEN_DEBUG_FS is not set CONFIG_XEN_BLKBACK_PAGEMAP <--- is
completely missing
# CONFIG_XEN_NETDEV_BACKEND is not set
# CONFIG_XEN_BLKDEV_BACKEND is not set
# CONFIG_XEN_BLKDEV_TAP is not set CONFIG_XENFS=y
# CONFIG_XEN_GNTDEV is not set
Это можно легко сделать с помощью поиска grep или чего-то подобного?
2 ответа
Это покажет строки в большом файле, которые соответствуют строкам в списке.
grep -Ff string-list-file very-big-file
Сначала отсортируйте два файла.
sort list > list-sorted
sort config > config-sorted
Чтобы увидеть строки, которые есть в вашем списке и в вашем файле конфигурации, запустите
comm -1 -2 list-sorted config-sorted
Чтобы увидеть строки в вашем списке, которых нет в вашем файле конфигурации, запустите
comm -2 -3 list-sorted config-sorted