Estaba tratando de encontrar una solución para esta pregunta. Quería usar awk
para la solución.
Mi archivo de entrada es algo como a continuación.
-bash-3.2$ cat file
ramesh
ramesh_venkat
ramesh3_venkat3
ramesh4
ramesh5
venkat
venkat3
venkat4
Usé el awk
comando para extraer los segundos valores después de _
lo siguiente.
awk -F "_" '{print $2}' file
Sin embargo, aunque el comando anterior imprime los valores correctos, obtengo líneas en blanco en mi salida. Tengo 2 preguntas
Pregunta 1
¿Cómo puedo eliminar las líneas en blanco en la salida para obtener solo venkat
y venkat3
en la salida?
Si lo uso en printf
lugar de print
en mi awk
, obtengo venkatvenkat3
como resultado lo que no es lo que quería lograr. Quiero la salida como
venkat
venkat3
Pregunta 2
Usando esos valores como una matriz asociativa o algo así, ¿cómo puedo encontrar si los valores realmente ocurren en la $1
columna?
Quería lograr algo como,
awk -F "_" '$2==1{print $1}' file
EDITAR
No noté la awk
solución de Stephane. ¿Está haciendo lo mismo que había mencionado?
awk
no está haciendo lo mismo. Su enfoque supone que una palabra solo puede estar contenida en otra si está separada por_
. Si bien eso es cierto para el ejemplo del OP, todas las respuestas publicadas también tratan casos comodoglion
y no solodog_lion
.