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 grep
para 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.20
or Level1.2a
e 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 -P
a 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