Stavo cercando di trovare una soluzione a questa domanda. Volevo usare awk
per 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 awk
comando 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 venkat
e venkat3
nell'output?
Se uso printf
invece che print
nel mio awk
, ottengo venkatvenkat3
come 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 $1
colonna?
Volevo ottenere qualcosa di simile,
awk -F "_" '$2==1{print $1}' file
MODIFICARE
Non ho notato la awk
soluzione di Stephane. Sta facendo la stessa cosa che avevo menzionato?
awk
non 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 comedoglion
e non solodog_lion
.