Liste zeilenweise per regulärem Ausdruck prüfen und fehlermeldung ausgeben ...

M

MaeK

Grünschnabel
Hallo,

ich möchte eine Liste per regulärem Ausdruck prüfen und eine Fehlermeldung ausgeben wenn der Eintrag in der Liste nicht dem regulären Ausdruck entspricht.

Liste muss so aussehen

XXXXXXXX_XXX_XX

Beispiel:

hsb8ns7w_ARD_09
ia8sh7dt_ZDF_23

mein regulärer Ausdruck

egrep '^[^_][^_][^_][^_][^_][^_][^_][^_][_][A-Z][A-Z][A-Z][_][0-9][0-9]?'
 
Normalerweise funktioniert es so, dass man eine konkrete Frage stellt, damit niemand herumraten muss, was man gemeint haben könnte :)

Suchst du etwas Derartiges?

Code:
#!/bin/bash
FEHLER=$(egrep -iv '^[a-z0-9]{8}_[a-z0-9]{3,4}_[0-9]{2}$' $1)
 
if [ ! "$FEHLER" == '' ]; then
  echo -n 'Anzahl der Fehler: '
  echo $FEHLER | wc -l
fi
Ich denke, Sender wie 3SAT und DOKU sollte man auch berücksichtigen, deswegen {3,4} und nicht {3}.


cu
 
Zuletzt bearbeitet:
Oder um sich den wc-Aufruf zu sparen:

Code:
#!/bin/sh

# ...Hier korrekterweise noch Überprüfung, ob $1 nicht leer ist...

ERRORS=`grep -Evc '^[^_]{8}_[A-Z]{3}_[0-9]{2}$' "$1"`

if [ $ERRORS -gt 0 ]; then
  echo "Anzahl der Fehler: ${ERRORS}"
  exit 1
fi

Bei der RegExp könnte slackfan Recht haben, ich habe jetzt deinen originalen Ausdruck genommen (bzw. seine letztendliche Bedeutung). :)
 
Zuletzt bearbeitet:
Das egrep stand bei mir ohne -c drin, weil er ja nicht schreibt, ob ihn die falschen Zeilen inhaltlich interessieren. Da er weiter nicht schreibt, welches grep und welche Shell er nutzt, ist vieles möglich. Er könnte ja sogar ein cmd-let der PowerShell benutzen.
 
Zuletzt bearbeitet:
Hallo,

entschuldigt das ich so an Informationen gegeizt hab.
Ich benutze die Korn-Shell und mich interessieren in diesem Schritt nur die falschen Zeilen.

Vielen Dank für eure Hilfe.
Mit euren Tipps konnte ich das Problem lösen :).
 
Zuletzt bearbeitet:

Ähnliche Themen

Suchen und Ersetzen mit regulärem Ausdruck

AWK Tip gesucht

Skript - letzten Samstag im Monat

nach regulärem Ausdruck suchen und in Datei schreiben

abschneiden nach letztem Zeichen einer Zeile

Zurück
Oben