Ладно, как насчет чего-то вроде этого:
awk "/^[A-Z]\$/{ l=\$1 ; } ; /^${NAME}\$/ { print l ; exit ; };"
Минусы: включает в себя цитирование (которое я лично стараюсь избегать) и регулярные выражения (которые трудно понять) и awk (что трудно понять)
Плюсы: я думаю, что это помогает, по крайней мере, насколько я понимаю это пересмотрено.
(само собой разумеется, что вы должны заменить $ {NAME} на запись, которую вы ищете, например, tim)
Объяснение, которое было запрошено в разделе комментариев:
/^[A-Z]\$/{ l=\$1 ; }
Для каждой строки, которая является одной заглавной буквой, присвойте первый (единственный) элемент в этой строке переменной l (буква ell).
/^${NAME}\$/ { print l ; exit ; }
Для каждой строки, которая соответствует $ {NAME} (вы должны заменить то, что ищете $ {NAME}, как я уже говорил выше, или установить и экспортировать переменную среды NAME перед запуском команды), выведите самое последнее значение для переменной l, а затем выйдите. По сути, программа завершает работу, как только встречает строку, которая точно соответствует указанному значению, сразу после печати последней обнаруженной строки, соответствующей первому регулярному выражению.
Я процитировал все $, кроме того, который использовался для $ {NAME}, потому что я использовал двойные кавычки вместо одинарных кавычек (чтобы позволить $ {NAME} расширяться, но во избежание путаницы с другими $.