2017-02-07 18 views
1

У меня есть файл в папке, которая будет называться как version1.txt или version99.txt. Я нахожусь в окне Windows с установленными утилитами GNU и делаю это из командной строки. В настоящее время, мой результат выглядит следующим образом:Как читать номер версии из имени файла с помощью сценария оболочки и регулярного выражения

Команда: dir | grep version

результат: 12/08/2016 04:50 PM 0 version12.txt

Я хочу, чтобы вернуть номер 12 в этом случае.

Я написал регулярное выражение, которое будет соответствовать версии 12 (хотя мне нужно, чтобы оно соответствовало только 12), но я не могу понять, как заставить его читать с помощью sed (у меня нет awk). Это то, что я пытаюсь:

dir | grep version | sed "/version[0-9]{2}|version[0-9]/g"

Как я могу получить только номер версии появится?

ответ

1

Вы можете использовать awk вместо grep извлечь номер версии:

dir | awk '/version/{gsub(/[^0-9]+/, "", $NF); print $NF}' 

12 

Вы можете использовать sed также:

dir | sed 's/.* version\|\..*//g' 
+0

Как я уже сказал в вопросе, у меня нет awk на этом сервере. – Jake

+0

ok попробуйте мой обновленный ответ для альтернативы 'sed' – anubhava

0

Вот более простая альтернатива, которая отменяет требование Grep:

dir /b version*.txt | sed 's/[^0-9]*//g'