Estaba tratando de encontrar una solución para esta pregunta. Quería usar awkpara 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 awkcomando 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 venkaty venkat3en la salida?
Si lo uso en printflugar de printen mi awk, obtengo venkatvenkat3como 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 $1columna?
Quería lograr algo como,
awk -F "_" '$2==1{print $1}' file
EDITAR
No noté la awksolución de Stephane. ¿Está haciendo lo mismo que había mencionado?

awkno 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 comodogliony no solodog_lion.Respuestas:
Pregunta 1
Pregunta 2
fuente
venkatyvenkat3según el OP formulado en la otra pregunta. Estoy tratando de encontrar si la clave posterior_está presente en mi$1columna.para la pregunta 1, puede usar la opción
--only-delimited(-s) decutfuente
Otro enfoque:
Pregunta 1
Esto solo se imprimirá si
$2está definido. Es una forma más corta de escribir:Pregunta 2
No tengo nada que agregar que aún no se haya abordado.
fuente
Pregunta 1
Pregunta 2
fuente
venkatyvenkat3como salida ya que están presentes$1. Sin embargo, obtengo todos los$1valores según su comando.$2entrada que se ha$2producido en la primera columna. ¿Es esto correcto?