shell Befehl zum kürzen/schneiden Sie einen Teil der Zeichenkette
Ich habe eine Datei mit dem unten gezeigten Inhalt. Ich bekam den Befehl, zu drucken Versionsnummer aus ihm heraus. Aber ich muss kürzen den letzten Teil in der version-Datei
Datei.Skillung:
Version: 3.12.0.2
Befehl verwendet:
VERSION=($(grep -r "Version:" /path/file.spec | awk '{print ($2)}'))
echo $VERSION
Aktuellen Ausgabe : 3.12.0.2
Gewünschte Ausgabe : 3.12.0
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Cut-split-string mit dem Feld-delimiter (-d) , dann wählen Sie den gewünschten Bereich mit -f-param.
1
in den cut-Befehl und die Klammern in dieawk
Aussage, die macht es noch kürzer:VERSION=($(grep -r "Version:" /path/file.spec| awk '{print $2}' | cut -d. -f-3))
Es ist absolutey keine Notwendigkeit für externe tools wie
awk
,sed
etc. für diese einfache Aufgabe, wenn Sie Ihre shell ist POSIX-konform ist (was es sein sollte) und unterstützt parameter expansion:Könnte man mit dieser
awk
Skriptawk -F'[ .]' '{print $2"."$3"."$4}'
:Oder dieser einzelnen
grep
Aber Sie müssen nie
grep
undawk
zusammen.wenn Sie nur grep einzigen Datei, die
-r
keinen Sinn macht.ebenfalls auf der Grundlage der Ausgabe des Befehls Linie, dieser grep funktionieren sollte:
gibt Sie:
den
\K
ist auch schön. arbeitete für Feste/nicht-fixed length look-behind. (da PCRE 7.2). Es ist eine weitere Antwort darüber. aber ich fühle mich look-behind ist einfacher zu Lesen, wenn Feste Länge.