Я намагався розібратися у вирішенні цього питання. Я хотів використати awkдля рішення.
Мій вхідний файл - це щось на кшталт нижче.
-bash-3.2$ cat file
ramesh
ramesh_venkat
ramesh3_venkat3
ramesh4
ramesh5
venkat
venkat3
venkat4
Я використовував awkкоманду для отримання другого значення після _наведеного нижче.
awk -F "_" '{print $2}' file
Однак, хоч наведена вище команда друкує правильні значення, я отримую порожні рядки у своєму виході. У мене 2 питання.
питання 1
Як я можу видалити порожні рядки у виході, щоб я отримав лише venkatта venkat3у виході?
Якщо я використовую printfзамість printсвого awk, я отримую venkatvenkat3як вихід, чого не хотів досягти. Я хочу вихід,
venkat
venkat3
Питання 2
Використовуючи ці значення як асоціативний масив чи щось подібне, як я можу дізнатися, чи є значення насправді в $1стовпчику?
Я хотів досягти чогось такого,
awk -F "_" '$2==1{print $1}' file
EDIT
Я не помітив awkрішення Стефана. Це робиться те саме, що я згадував?
awkне робить те саме. Ваш підхід передбачає, що слово може міститись лише в іншому, якщо воно розділене символом_. Хоча це справедливо і для прикладу ОП, всі опубліковані відповіді також стосуються таких випадків, якdoglionі не тількиdog_lion.