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

0

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

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 grep para pesquisar 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 eu 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 o meu próprio comando, tanto quanto possível. Eu não prefiro novos comandos e formas de pesquisa. Estou feliz com o meu só precisa pesquisar a partir da segunda coluna.

    
por user9371654 06.06.2018 / 16:31

2 respostas

0

Esta é uma modificação simples da minha resposta à sua pergunta relacionada:

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

Ou ainda mais simples:

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.20 ou Level1.2a e você desejar 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 ).

    
por 06.06.2018 / 16:40
0

Use a opção -P (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
    
por 06.06.2018 / 16:40