Stavo cercando di trovare una soluzione a questa domanda. Volevo usare awkper la soluzione.
Il mio file di input è simile al seguente.
-bash-3.2$ cat file
ramesh
ramesh_venkat
ramesh3_venkat3
ramesh4
ramesh5
venkat
venkat3
venkat4
Ho usato il awkcomando per estrarre i secondi valori dopo _come sotto.
awk -F "_" '{print $2}' file
Tuttavia, anche se il comando sopra stampa i valori corretti, sto ottenendo righe vuote nel mio output. Ho 2 domande.
Domanda 1
Come posso rimuovere le righe vuote nell'output in modo da ottenere solo venkate venkat3nell'output?
Se uso printfinvece che printnel mio awk, ottengo venkatvenkat3come output che non volevo ottenere. Voglio l'output come,
venkat
venkat3
Domanda 2
Usando quei valori come un array associativo o qualcosa del genere, come posso sapere se i valori si verificano effettivamente nella $1colonna?
Volevo ottenere qualcosa di simile,
awk -F "_" '$2==1{print $1}' file
MODIFICARE
Non ho notato la awksoluzione di Stephane. Sta facendo la stessa cosa che avevo menzionato?
awknon sta facendo la stessa cosa. Il tuo approccio presuppone che una parola possa essere contenuta in un'altra solo se è separata da_. Sebbene ciò sia vero per l'esempio del PO, tutte le risposte postate trattano anche casi comedoglione non solodog_lion.