Лучший способ разобрать эту конкретную строку с помощью awk / sed?

Мне нужно получить конкретную строку версии из файла (назовите ее version.lst) и использовать ее для сравнения другой в сценарий оболочки. Например, сакэ, файл содержит строки, которые выглядят так:

V1.000 -- build date and other info here -- APP1
V1.000 -- build date and other info here -- APP2
V1.500 -- build date and other info here -- APP3

.. и так далее. Допустим, я пытаюсь получить первую версию (в данном случае V1.000) из APP1. Очевидно, что версии могут меняться, и я хочу, чтобы это было динамично. То, что у меня сейчас работает:

var = `cat version.lst | grep " -- APP1" | grep -Eo V[0-9].[0-9]{3}`

Канал для grep получит строку, содержащую APP1, а второй канал для grep получит строку версии. Однако я слышал, что grep - это не способ сделать это, поэтому я хотел бы узнать, как лучше всего использовать awk или sed. Есть идеи? Я новичок в обоих и не нашел достаточно простого учебника, чтобы изучить его синтаксис. Поддерживают ли они egrep? Спасибо!

6
задан Jack 30 January 2011 в 23:20
поделиться