Próbowałem znaleźć rozwiązanie tego pytania. Chciałem użyć awkrozwiązania.
Mój plik wejściowy jest podobny do poniższego.
-bash-3.2$ cat file
ramesh
ramesh_venkat
ramesh3_venkat3
ramesh4
ramesh5
venkat
venkat3
venkat4
Użyłem awkpolecenia, aby wyodrębnić drugie wartości po, _jak poniżej.
awk -F "_" '{print $2}' file
Jednak pomimo tego, że powyższe polecenie wypisuje prawidłowe wartości, otrzymuję puste wiersze na moim wydruku. Mam 2 pytania
Pytanie 1
Jak mogę usunąć puste linie na wyjściu, aby uzyskać tylko venkati venkat3na wyjściu?
Jeśli użyję printfzamiast printw moim awk, otrzymam venkatvenkat3jako wynik, czego nie chciałem osiągnąć. Chcę wynik jak
venkat
venkat3
pytanie 2
Używając tych wartości jako tablicy asocjacyjnej lub czegoś takiego, jak mogę sprawdzić, czy wartości faktycznie występują w $1kolumnie?
Chciałem osiągnąć coś takiego,
awk -F "_" '$2==1{print $1}' file
EDYTOWAĆ
Nie zauważyłem awkrozwiązania Stephane. Czy robi to samo, o czym wspomniałem?
awknie robi tego samego. Twoje podejście zakłada, że słowo może być zawarte w innym, tylko jeśli jest oddzielone_. Chociaż dotyczy to przykładu PO, wszystkie opublikowane odpowiedzi dotyczą również przypadków podobnychdoglioni nie tylkodog_lion.