Я пытался найти решение этого вопроса. Я хотел использовать 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
РЕДАКТИРОВАТЬ
Я не заметил awkрешение Стефана. Это делает то же самое, что я упомянул?
awkне делает то же самое. Ваш подход предполагает, что слово может содержаться в другом, только если оно разделено_. Хотя это верно для примера ОП, все опубликованные ответы также касаются таких случаев, какdoglionи не толькоdog_lion.