egrep grep sed und co. parsen einer datei

tplanitz

Erfahrenes Mitglied
Hallo,

hoffentlich könnt ihr mir helfen:
Thema: *.htm Datei soll durchsucht werden und folgendes finden

-- DAS_SOLL_GEFUNDEN_WERDEN
-- MICHBITTEAUCHFINDEN


Das sind meine beiden suchpattern. Es sollen also nur wörter gefunden werden mit Großbuchstaben b.z.w. Wörter mit Großbuchstaben UND Unterstrichen.

Folgendes habe ich in der Shell geschrieben:
PHP:
egrep '_+* | [A-Z]+' test4  | sed s/'[a-z]//g;s/&;//g;s/<[^<>]*>'//g

Dabei ist test4 der dateiname. Ich wäre auch für jede andere Idee offen haubtsache ich komme weiter. Derzeit werden mir noch Leerzeilen und einzelne Großbuchstaben sowie alle anderen Zeichen angezeigt :( .

Es wäre klasse wenn ihr mit helfen könntet, bin am Ende meines Lateins.
 
Hi.

Versuch's mal so:
Code:
# bsp.sed

: begin

s/^[^A-Z_]*//
h 
s/^\([A-Z_][A-Z_]*\).*/\1/p
t loop
n

: loop
g
s/^[A-Z_]*\([^A-Z_]\)/\1/
t begin
Aufruf dann
Bash:
sed -nf bsp.sed test4
Gruß
 
Hallo deepthroat,

mensch super das hat geklappt. Es fehlt jetzt nur noch eine kleine nuance. Wie schaffe ich es das nur ab einer Anzahl von 3 'GROSSBUCHSTABEN' die ausgabe erfolgt. Ich habe gelesen das man eine Anzahl von treffern vorgeben kann. Leider komme ich mit der Syntax nicht klar. Es funktioniert leider nicht:

grep '^[A-Z]\{3\}' datei.txt

Kannst du mir hier noch einen kleinen Tip geben ?

Vielen Dank
 
Hi.
mensch super das hat geklappt. Es fehlt jetzt nur noch eine kleine nuance. Wie schaffe ich es das nur ab einer Anzahl von 3 'GROSSBUCHSTABEN' die ausgabe erfolgt. Ich habe gelesen das man eine Anzahl von treffern vorgeben kann. Leider komme ich mit der Syntax nicht klar. Es funktioniert leider nicht:

grep '^[A-Z]\{3\}' datei.txt
Dein Pattern würde jetzt nur am Zeilenanfang mit 3 Großbuchstaben übereinstimmen. Ist es das was du willst? Wenn nicht, lass halt einfach das ^ Zeichen weg.

Das würde aber dein Problem nicht lösen, denn jetzt wird zwar jede Zeile wo keine 3 Großbuchstaben hintereinander stehen gefiltert, sed wird aber für jede Zeile die von grep ausgegeben wird wieder alle Wörter aus Großbuchstaben ausgeben - ob es nun 1, 2, 3 oder mehr Buchstaben sind...

Ich hab das sed Skript nochmal etwas angepasst:
Code:
# bsp2.sed
: begin
h
s/^\([A-Z_][A-Z_][A-Z_][A-Z_]*\).*/Match: \1/p
t dummy
: dummy
g
s/^[A-Z_]*[^A-Z_][^A-Z_]*//
t begin
Gruß
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück