Como começar a pesquisar na segunda coluna usando o comando grep

Como começar a pesquisar na segunda coluna usando o comando grep

Eu tenho um arquivo que contém uma string como a seguinte:

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

Eu quero usar greppara procurar por uma palavra. Eu usei este comando:

grep -w "Level1.2" file1.txt > result.txt 

A saída é:

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
Level1.2,Levelv2

Mas preciso que o grep ignore a primeira coluna. Eu preciso do seguinte na saída:

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

Por favor, tente me ajudar com meu próprio comando, tanto quanto possível. Não prefiro novos comandos e formas de pesquisa. Estou feliz com o meu, só preciso pesquisar a partir da segunda coluna.

Responder1

Esta é uma modificação simples deminha respostapara sua pergunta relacionada:

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

Ou ainda mais simplesmente:

grep ',Level1\.2' myfile.txt

A vírgula anterior na string de correspondência garante que nada no primeiro campo seja correspondido.

Se houver a possibilidade de Level1.20or Level1.2ae você quiser excluir esses casos, será necessário adicionar um delimitador de palavras:

grep ',Level1\.2\b' myfile.txt

Observe que nenhum desses casos precisa de egrep(ou grep -E).

Responder2

Use -Pa opção (PCRE) com lookbehind positivo:

grep -Pw "(?<=,)Level1\.2" file.txt

Saída:

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

informação relacionada