Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: [DE] [gelöst]String RegExp Vergleich in If  (Read 5182 times)

khx

  • Guest
[DE] [gelöst]String RegExp Vergleich in If
« on: 2010/12/27, 00:37:29 »
Moin,
hab 2 Strings
s1=eh[bx1].*
s2=xxehbnbf

1. wie formuliere ich da ein if ?

2. wie sieht ein find für
  - echo sed
  - echo grep
  - s3=sed/grep
  aus?
 
Probleme machen hauptsächlich < > |
Die RegEx krieg ich selber hin

[gelöst] es geht mit "expr match", d.h ohne sed/grep

Hermann

Offline ralul

  • User
  • Posts: 1.814
String RegExp Vergleich in If
« Reply #1 on: 2010/12/27, 00:54:19 »
Das sind Umleitungoperatoren für den Bash Interpreter. Wenn Bash dies nicht sehen soll benutze Tütelchen:
'einfache Tütel: alles ist versteckt für die Bash'
"zweifache Tütel: Bash setzt Variablen ein, zB Text für: ${MeineVar}"

Code: [Select]
#!/bin/bash
if [ "<>" = "><" ] ; then
   echo "dies wird nicht ausgegeben"
else
   echo "nein - ungleich - dies sieht $USER"
   echo 'User sieht nach Doppelpunkt "$USER": $USER'
fi
experiencing siduction runs better than my gentoo makes me know I know nothing

DonKult

  • Guest
String RegExp Vergleich in If
« Reply #2 on: 2010/12/27, 09:21:59 »
"Tütelchen" :D Besser bekannt unter "Anführungszeichen" in den Ausführungen 'einfach' und "doppelt" ;)
(doppelte Anführungszeichen werden auch gerne mal als Gänsefüßschen bezeichnet)

eine if für einen regulären Ausdruck sähe in etwa so aus:
Code: [Select]
AUSGABE="$(expr match 'tooolll' '[^o]*\(o\+\)[^o]*')"
if [ -n "$AUSGABE" ]; then
    echo "Erf${AUSGABE}lg!!"
else
    echo 'FAIL!'
fi

Wenn dir das Ergebnis des Ausdruckes nicht wichtig ist, kannst du die expr auch direkt ins if schreiben, allerdings würde ich dann die Standardausgabe auf /dev/null umleiten, damit dein Script keine Ausgaben generiert.
Code: [Select]
if expr match 'tooolll' '[^o]*\(o\+\)[^o]*' > /dev/null; then

P.S.: Viele denken, man müsste bei if immer [ irgendwas ] schreiben, das ist aber nicht zutreffen. Das [ ist keine Syntax sondern ein Programm - nämlich das Programm 'test' - siehe manpage.

//edit by me: Tipfehler im if-Beispile korrigiert: s/AUSGABE/AUFGABE/

khx

  • Guest
String RegExp Vergleich in If
« Reply #3 on: 2010/12/27, 10:47:12 »
Hi,

@Ralul - Tütelchen: mußte schon 2 mal hinschauen, was du meinst - und as mitten in der Nacht ...

@DonKult:
das muß allerdings so sein (mit !):
if [ ! -n "$AUFGABE" ]; then

@*:
man sieht wohl manchmal den Wald vor lauten Bäumen nicht ...
jedenfals das "expr match" hab ich wohl erfolgreich beim gooooooogeln übersehen.

grep/sed erübrigt sich hier dann wohl


Danke euch!

DonKult

  • Guest
Re: String RegExp Vergleich in If
« Reply #4 on: 2010/12/27, 11:32:56 »
Quote from: khx
@DonKult:
das muß allerdings so sein (mit !):
if [ ! -n "$AUFGABE" ]; then /quote]
Argh, Vertipper… Da steht natürlich "AUSGABE" und nicht "AUFGABE"… dann klappts auch mit -n was für 'nicht leer' steht während -z 'leer' bedeutet (und damit eqvivalent zu '! -n' ist).