Ich weiß, dass dies nicht sed verwendet, aber basierend auf Ihrer Ausgabe ist dies einfacher.
svnversion --version | head -1 | awk ''
Wenn Sie Perl zur Verfügung haben ...
svnversion --version | perl -lne 'print $1 if /version (\d+.\d+.\d+)/'
Ich möchte sed verwenden, um die Versionsnummer aus dem Befehl zu ziehen:
svnversion --version
Was gibt Ausgabe wie:
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/).
Und nach der Bearbeitung mit sed möchte ich einfach:
1.6.2
Bisher habe ich diese Monstrosität (aufgrund meiner Unwissenheit):
svnversion --version | sed s/[\wa-zA-Z//\(\):,]*//g | sed 's/[ ]//' | sed 's/[ ]//' | sed 's/[ ][0-9 ./n/-]*//'
Ich bin sicher, dass es eine einfache, elegante Lösung gibt, die ein Experte leicht anbieten kann.
Ich weiß, dass dies nicht sed verwendet, aber basierend auf Ihrer Ausgabe ist dies einfacher.
svnversion --version | head -1 | awk ''
Wenn Sie Perl zur Verfügung haben ...
svnversion --version | perl -lne 'print $1 if /version (\d+.\d+.\d+)/'
Versuche dies:
svnversion --version | sed -n '/version/ s/.*version \([0-9]\+\.[0-9]\+\.[0-9]\+\) .*/\1/p'
Es sagt:
-n
--- Ausgabe nicht automatisch drucken./version/
--- in Zeilen, die den String "version" enthalten,s/
- Ersatz für das, was ist.*version
und .*
--- zwischen [einer Folge von null oder mehr eines beliebigen Zeichens, der Zeichenfolge "version", einem Leerzeichen] und [einem Leerzeichen, einer Folge von null oder mehr eines beliebigen Zeichens],\(...\)
--- einfangen[0-9]\+
--- eine Folge von einer oder mehreren Ziffern\.
--- gefolgt von einer wörtlichen Periode/\1/
--- Was wurde in der ersten (und in diesem Fall einzigen) Klammergruppe erfasstp
--- und explizit ausdrucken.Da der automatische Druck unterdrückt wird und nur die Zeile ausgewählt wird, die "Version" enthält, werden die anderen Zeilen ignoriert.
Eine weitere Möglichkeit, dies ohne zu tun: svnversion --version | head -1 | cut -d" " -f3