Tengo un archivo que contiene una cadena como la siguiente:
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
Quiero usar grep
para buscar una palabra. Usé este comando:
grep -w "Level1.2" file1.txt > result.txt
La salida es:
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
Pero necesito que grep ignore la primera columna. Necesito lo siguiente en la salida:
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
Intente ayudarme con mi propio comando tanto como sea posible. No prefiero nuevos comandos y formas de búsqueda. Estoy contento con el mío, solo necesito buscar a partir de la segunda columna.
Respuesta1
Esta es una simple modificación demi respuestaa su pregunta relacionada:
grep '^[^,]*,.*Level1\.2' myfile.txt
O incluso más simplemente:
grep ',Level1\.2' myfile.txt
La coma anterior en la cadena coincidente garantiza que no coincida nada en el primer campo.
Si existe la posibilidad de Level1.20
o Level1.2a
y desea excluir estos casos, debe agregar un delimitador de palabras:
grep ',Level1\.2\b' myfile.txt
Tenga en cuenta que ninguno de estos casos necesita egrep
(o grep -E
).
Respuesta2
Utilice -P
la opción (PCRE) con búsqueda hacia atrás positiva:
grep -Pw "(?<=,)Level1\.2" file.txt
Producción:
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