Ich brauche einen Teil der Zeichenfolge abhängig von einem Wert aus einer langen Zeichenfolge (zum Beispiel einige Ausgabe von ps -ef).bash script get substring von string
zum Beispiel Quelle string:
long_string1="cmd ... -aaaa=A -bbbb=B -zzzz=Z -DHOME=/home/user/xxx -cccc=C ... etc."
oder
long_string2="cmd ... -aaaa=A -DHOME=/home/user/xxx -bbbb=B -zzzz=Z -cccc=C ... etc."
ich extrahieren oder erhalten folgende subtring erst nach -DHOME =:
/home/user/xxx
Position von "-DHOME = "ist nicht fest, es könnte irgendwo in long_string sein.
Ich verwende folgenden Befehl:
echo $long_string1|sed -e 's/.*-DHOME=//g;s/ -cccc=C.*//g'
es für $ long_string1 funktioniert gut, aber es funktioniert nicht für $ long_string2.
Es wird nur funktionieren, wenn "-cccc = C" wird netx sein "-DHOME =" :-(
Wie kann ich Pfad erhalten, nachdem "-DHOME =", aber nicht ist abhängig von folgenden Werten zB "-cccc = C" ???
gibt es eine effektivere Art und Weise oder regexp zu gleiche Ausgabe zu erhalten?
Dank M.Gi
OR, wenn Sie Sachen vor '-DHOME =' entfernt haben, für den ersten Platz suchen und alles danach löschen? d.h. 's /. * $ // ''? Viel Glück. – shellter
unterstützt Ihre Shell 'var =" abc def "; echo $ {var/*} '? – shellter
Auch in der Zukunft, ** diese ** ist, warum Sie ständig Kommentare sehen ** zeigen Sie uns Ihren Code **. Lass die Leute nicht raten, was du tust ;-) – shellter