Я хотел бы использовать sed, чтобы вытащить номер версии из команды:
svnversion --version
Который дает вывод как:
svnversion, version 1.6.2 (r37639)
compiled May 10 2009, 12:41:21
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
И после обработки с помощью sed я бы просто хотел:
1.6.2
Пока что у меня есть это чудовище (из-за моего невежества):
svnversion --version | sed s/[\wa-zA-Z//\(\):,]*//g | sed 's/[ ]//' | sed 's/[ ]//' | sed 's/[ ][0-9 ./n/-]*//'
Я уверен, что есть простое элегантное решение, которое специалист может легко предоставить.
version-control
sed
version
WilliamKF
источник
источник
Попробуй это:
Это говорит:
-n
--- Не печатать автоматически вывод./version/
--- В строках, которые содержат строку «версия»,s/
- заменить то, что.*version
и.*
--- между [последовательностью из нуля или более любого символа, строкой «версия», пробел] и [пробелом, последовательностью из нуля или более любого символа],\(...\)
--- захват[0-9]\+
--- последовательность из одной или нескольких цифр\.
--- с последующим буквальным периодом/\1/
--- что было записано в первом (и только в этом случае) наборе скобокp
--- и явно распечатать его.Поскольку автоматическая печать подавляется, и выбирается только строка, содержащая «версию», остальные строки игнорируются.
источник
Еще один способ сделать это без sed:
svnversion --version | head -1 | cut -d" " -f3
источник