2017-07-22 5 views
1

Ich bin müde von diesem sed: D So habe ich eine kleine Datei:Wie bekomme ich das erste Match mit sed?

version = "1.1" 
group= "com.centurion.eye" 
archivesBaseName = "eye" 

impmet { 
    version = "4.1614" 
    runDir = "eclipse" 
} 

Und hier ist mein sed Befehl:

sed -n -e '/version/ s/.* = *//p' "build.gradle" 

Und ich brauche 1.1-Version zu erhalten. Also, wenn ich diesen Befehl ausführen, der Ausgang ist:

"1.3" 
"4.1614" 

Aber gewünschte ist:

"1.3" 

Wie kann ich das erreichen? Vielen Dank!

+0

hast du eine Chance, meine Lösung zu überprüfen? – JRG

Antwort

0

pipe Ihre Befehle Ausgabe auf, um nur den ersten Eintrag zu erhalten.

sed -n -e '/version/ s/.* = *//p' "build.gradle" | head -1 

Beispiel Run

[ /c]$ cat build.gradle 
version = "1.1" 
group= "com.centurion.eye" 
archivesBaseName = "eye" 

impmet { 
    version = "4.1614" 
     runDir = "eclipse" 
     } 
[ /c]$ sed -n -e '/version/ s/.* = *//p' build.gradle | head -1 
"1.1" 
+0

Danke, ich werde es versuchen! –

1

Quit nach dem ersten übereinstimmt.

sed -n -e '/version/ {s/.* = *//p;q}' build.gradle 
0

Mit GNU sed, Sie auch 0 im Adressbereich Substitution gelten nur für das erste Spiel verwenden können:

sed -n -e '0,/version/s/.* = *//p' build.gradle 
Verwandte Themen