Abschneiden eines Strings im Script.

L

Lemmy82

Grünschnabel
Moin Unixboarder,

ich habe folgende Problemstellung in einem shell-script unter Solaris:
An einer bestimmten Stelle im Script gebe ich die Variable $STRING aus

Code:
echo $STRING

Der String sieht wie folgt aus:
Code:
GENERATED STACK TRACE STOP Check the log for stack traces
Der String kann auch anders lauten, das Wort STOP kommt aber immer vor.

Ich möchte nun diesen String ab dem Wort STOP bis zum Ende abschneiden.
Es soll also lediglich
Code:
GENERATED STACK TRACE
übrigbleiben. Habe einige Sachen mit sed bzw. awk versucht aber ohne großen Erfolgt, bin auch der totale Anfänger in dem Bereich.

Hat jemand eine Idee? Habe schon kurz die Suche-Funktion versucht, aber nicht wirklich was passendes gefunden. Vielleicht kann mir ja einer weiterhelfen.

Besten Dank,
Lemmy82:)
 
Hey klappt!
Super vielen lieben Dank für die Hilfe und auch danke für den Link.

Bye
Lemmy82
 
Hi..
ich schreib das hier mal mit rein...
Die Probleme ähneln sich -

Ich hab eine Datei wo an jedem Zeilenanfang ne Satzkennung rein muss. Immer ein "H".
Ich dachte mit paste würde es gehen - allerdings hab ichs nich hinbekommen...

Könnte es auch mit sed gehen? Oder ganz anders?

grüße ele
 
Hallo,

ich grabe diesen über sechs Jahare alten Beitrag mal aus, weil es ganz gut passt. Bei der Gelegenheit habe ich mich hier (endlich) mal registriert! :)

Also, ich habe eine passwd aus der ich bestimmte Daten brauche.

Beispiel der htpasswd:

Code:
thomas@irgendwo.de:{CRAM-MD5}1234123412341234123412341234123412341234123412341234123412341234:8:8::/var/mail::userdb_mail=maildir:/var/mail/dub15/22/ userdb_quota_rule=*:storage=1MB userdb_sieve=/var/mail/dub15/22/dovecot.sieve
michael@nirgendwo:{CRAM-MD5}1234123412341234123412341234123412341234123412341234123412341234:8:8::/var/mail::userdb_mail=maildir:/var/mail/dub19/7/ userdb_quota_rule=*:storage=100MB userdb_sieve=/var/mail/dub19/7/dovecot.sieve
frauke@zuhause.de:{CRAM-MD5}1234123412341234123412341234123412341234123412341234123412341234:8:8::/var/mail::userdb_mail=maildir:/var/mail/dub15/24/ userdb_quota_rule=*:storage=2200MB userdb_sieve=/var/mail/dub15/24/dovecot.sieve

Nun benötige ich den Benutzernamen und sein Mailverzeichnis, so dass das Ergebnis so aussehen soll:

Code:
thomas@irgendwo.de dub15/22
michael@nirgendwo dub19/7
frauke@zuhause.de dub15/24

Geht das auch mit einem Einzeiler?

Grüße,

Wusel
 
Okay, sieht zwar ganz schön schwindelig aus, funktionert aber:

Code:
cat passwd | sed -e s/:.*:\\/var\\/mail\\//\ / | sed -e s/\\/\ userdb.*//

Geht bestimmt hübscher, reicht aber auch so.

Grüße,

Wusel
 
An einer bestimmten Stelle im Script gebe ich die Variable $STRING aus
Code:
echo $STRING
Der String sieht wie folgt aus:
Code:
GENERATED STACK TRACE STOP Check the log for stack traces
Der String kann auch anders lauten, das Wort STOP kommt aber immer vor.

Ich möchte nun diesen String ab dem Wort STOP bis zum Ende abschneiden.
Es soll also lediglich
Code:
GENERATED STACK TRACE
übrigbleiben.

Für diesen Fall am einfachsten:
Code:
STRING="GENERATED STACK TRACE STOP Check the log for stack traces"
echo ${STRING%%STOP*}

GENERATED STACK TRACE
 
Hab's auch erst nachher gesehen (mit meinen alten Augen) :D
Naja, vielleicht hilft's ja noch anderen.
 

Ähnliche Themen

Installing GENTOO 2008.0 on a QEMU DISK IMAGE (and KDE4).

Zurück
Oben