Ich habe versucht, eine Lösung für diese Frage zu finden. Ich wollte awk
für die Lösung verwenden.
Meine Eingabedatei ist ungefähr so wie unten.
-bash-3.2$ cat file
ramesh
ramesh_venkat
ramesh3_venkat3
ramesh4
ramesh5
venkat
venkat3
venkat4
Ich habe den awk
Befehl verwendet, um die zweiten Werte nach _
wie folgt zu extrahieren .
awk -F "_" '{print $2}' file
Obwohl der obige Befehl die korrekten Werte druckt, werden in meiner Ausgabe leere Zeilen angezeigt. Ich habe 2 Fragen.
Frage 1
Wie kann ich die Leerzeilen in der Ausgabe entfernen, damit ich nur venkat
und venkat3
in der Ausgabe erhalte ?
Wenn ich printf
statt print
in meinem verwende awk
, bekomme ich venkatvenkat3
als Ausgabe, was ich nicht erreichen wollte. Ich möchte die Ausgabe wie,
venkat
venkat3
Frage 2
Wie kann ich anhand dieser Werte als assoziatives Array oder ähnliches feststellen, ob die Werte tatsächlich in der $1
Spalte vorkommen?
Ich wollte so etwas erreichen wie:
awk -F "_" '$2==1{print $1}' file
BEARBEITEN
Ich habe die awk
Lösung von Stephane nicht bemerkt . Tut es dasselbe, was ich erwähnt hatte?
awk
macht nicht dasselbe. Ihr Ansatz geht davon aus, dass ein Wort nur dann in einem anderen enthalten sein kann, wenn es durch getrennt ist_
. Während dies für das Beispiel des OP gilt, befassen sich alle veröffentlichten Antworten auch mit Fällen wiedoglion
und nicht nurdog_lion
.