Вы можете сделать это с помощью sed
, но вы должны использовать диапазон адресов 0,addr2
(см. sed (1) - страница руководства Linux ), чтобы установить sed
в концеего диапазон в первом совпадении, например,
$ sed -n '0,/.*EAGL/s/^[^,]*[,]\(EAGL[^,]*\),.*$/\1/p' < file
EAGL165XQ.58
Пояснение
- с использованием шаблона
0,addr2
перед обычной заменой s/find/replace
, где find
ищет первую запятую [,]
, за которой следует EAGL
, используя - группу захвата
\(...\)
для хранения соответствующего EAGL...
до следующей запятой и где - обратная ссылка
\1
используется как replace
для замены всей строки содержимым, захваченным между \(...\)
Чтобы захватить результат в переменной, вы можете использовать подстановка команд , например
$ myvar=$(sed -n '0,/.*EAGL/s/^[^,]*[,]\(EAGL[^,]*\),.*$/\1/p' < file)
$ echo $myvar
EAGL165XQ.58
Посмотрите вещи и дайте мне знать, если у вас есть дополнительные вопросы.