Как искать строку, начиная со второго столбца

Как искать строку, начиная со второго столбца

У меня есть файл, содержащий строки, разделенные запятыми. Строки могут содержать точки (т.е. не только буквенно-цифровые символы). Вот пример:

site1.com,Level1.2
site2.com,Level1.1,Level1.0,Level1.2
site3.com,Level1.2
site4.com,Level1.2,Level1.1,Level1.0,Levelv3
siteLevel1.2,Levelv2
Level1.2,Levelv2

Мне нужно выполнить поиск по названиям сайтов (обратите внимание, что у меня нет определенного формата для названия сайта, т.е. оно не всегда заканчивается на .com, поэтому мне не следует учитывать, как выглядит первый столбец)

Мне нужны сайты, которыеТОЛЬКОсодержит определенную строку. В этом примере,Level1.2 исключительно(без Level1.1 и Level1.0 и Level3либо до, либо после). Затем выведите результат в новый файл, который соответствует условию (содержит только Level1.2). Таким образом, ключевые слова поиска начинаются со второго столбца (мне не нужен результат поиска, который находит совпадающий шаблон в названии сайта).

Итак, если я ищу Level1.2, новый файл должен содержать:

site1.com,Level1.2
site3.com,Level1.2

Но результат моей команды:

site1.com,Level1.2
site3.com,Level1.2
siteLevel1.2,Levelv2
Level1.2,Levelv2

Если есть сайт, в названии которого содержится Level1.2, то его не следует учитывать, поскольку меня не интересует первый столбец.

Я попробовал эту команду, и она у меня работает. Единственное, мне нужно, чтобы поиск игнорировал вхождение строки поиска в первом столбце.

awk '/Level1.2/ && !/Level1.1/ && !/Level1.0/ !/Level3/' myfile.txt > result.txt

решение1

Вы можете попробовать это awk:

awk -F, '$2=="Level1.2" && NF==2' myfile.txt

Разделитель ввода установлен на ,. Команда выводит строки, содержащие 2 поля, второе из которых содержит соответствующую строку.

решение2

Следующие работы:

grep '^[^,]*,Level1\.2' myfile.txt | grep -v ',Level.*Level'

При этом пропускается первое поле и его конечная запятая, затем выполняется поиск совпадения с Level1.2; затем результат фильтруется путем игнорирования всех записей с последующим значением Level(ни одна запись Levelв первом поле не будет иметь предшествующей запятой).

Я предположил, что другой текст может быть добавлен к Level1.2, при условии, что он не содержит Levelстроку. Если это не так, то вы можете использовать более простой вариант:

grep '^[^,]*,Level1\.2$' myfile.txt

Связанный контент