Intereting Posts
Процесс java все еще убит Скопируйте папку без ее иерархии / дерева Не удалось обновить CentOS6.6 из-за 404 Как найти расположение всех файлов с определенным именем, содержимое которого содержит определенную строку? Как установить php-gd на CentOS 7? cant compile install и настроить любое ядро ​​linux в debian 7 Бенчмаркинг с SELinux Как переписать многострочный путь в однострочный относительный путь Может ли Debian Linux найти автоматические драйверы для USB ethernet NIC? Выделите мышь для скринкастов без нарушения рабочего процесса Накопление памяти DBus Как я могу узнать, связана ли проблема с USB-портами на моем ноутбуке из-за аппаратного или программного обеспечения? После некоторых команд bash печатает «Ошибка сегментации (сбрасывание ядра)» по неизвестной причине Что такое BS "D в Mac OS X и iOS Internals? таймер systemd работает rsync в 3 часа ночи и останавливается в 6 утра

Как получить строки, чей n-й столбец содержит m-й столбец

У меня есть файл CSV, содержащий домены и веб-ссылки, например:

site1.com,mail.site1.com site2.com,testmail.com site3.com,mx.site3.com site4.com,smtp.site4.com site5.com,foomail.com site6.com,barmail.com site7.com,webmail.site7.com site8.com,01mx.site8.com site9.com,foobarmail.com site10.com,mx-smtp222.site10.com 

Я хочу получить строки, где столбец веб-почты содержит столбец доменов той же строки. В приведенном выше примере вывод должен быть:

 site1.com,mail.site1.com site3.com,mx.site3.com site4.com,smtp.site4.com site7.com,webmail.site7.com site8.com,01mx.site8.com site10.com,mx-smtp222.site10.com 

С awk :

 awk -F, '$2 ~ $1"$"' file.csv 
  • -F, устанавливает разделитель полей как ,

  • $2 ~ $1"$" если второе поле заканчивается первым полем; если да, напечатайте запись (действие по умолчанию)


С grep grep по умолчанию печатает только согласованные строки:

 grep -E '^([^,]+),.*\1$' file.csv 

С sed , линии печати, соответствующие условию:

 sed -nE '/^([^,]+),.*\1$/ p' file.csv 

Пример :

 % cat file.txt site1.com,mail.site1.com site2.com,testmail.com site3.com,mx.site3.com site4.com,smtp.site4.com site5.com,foomail.com site6.com,barmail.com site7.com,webmail.site7.com site8.com,01mx.site8.com site9.com,foobarmail.com site10.com,mx-smtp222.site10.com % awk -F, '$2 ~ $1"$"' file.txt site1.com,mail.site1.com site3.com,mx.site3.com site4.com,smtp.site4.com site7.com,webmail.site7.com site8.com,01mx.site8.com site10.com,mx-smtp222.site10.com % grep -E '^([^,]+),.*\1$' file.txt site1.com,mail.site1.com site3.com,mx.site3.com site4.com,smtp.site4.com site7.com,webmail.site7.com site8.com,01mx.site8.com site10.com,mx-smtp222.site10.com % sed -nE '/^([^,]+),.*\1$/ p' file.txt site1.com,mail.site1.com site3.com,mx.site3.com site4.com,smtp.site4.com site7.com,webmail.site7.com site8.com,01mx.site8.com site10.com,mx-smtp222.site10.com