bash grep zahlenkolonnne in string

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
root2root
Beiträge: 168
Registriert: 22.10.2007 13:06:29

bash grep zahlenkolonnne in string

Beitrag von root2root » 18.09.2009 01:28:52

Hallo Forum,
ich habe 2 Fragen an die Bashprogrammierer unter Euch:

1. Wie kann ich bitte mit dem Programm "grep" ( oder einem anderen geeigneten Prog ) einen String mit der Syntax

BlahblahBlahblahBlahblahAAAAAAAAAAA=ZZZZZ&BBBBBBBBlahblahBlahblahBlahblahBlahblah

aus einem Text Blahblah extrahieren, wobei

- Der String im Text öfters vorkommt
- A und B immer gleich sind
- die Z's Ziffern von 0-9 sein können
- die Z#s immer zwischen den Zeichen "=" und "&" liegen
- die Menge der Z's variieren kann .

2. Genau diesen String möchte ich in eine Datei schieben und nicht die ganze Zeile. Wie geht das bitte ?
Grep sucht soweit ich weiss immer ganze Zeilen mit passendem Muster.

Dank euch schon mal :D
Gruß root2root

mjik
Beiträge: 54
Registriert: 28.08.2006 22:45:48

Re: bash grep zahlenkolonnne in string

Beitrag von mjik » 18.09.2009 02:34:07

hi
Ich glaube das tool awk ist was du suchst.
kann ich aber nicht viel zu sagen.

hier kannst ne beispiel finden::
http://debianforum.de/forum/viewtopic.php?f=34&t=89135

viel erfolg!

AopicieR
Beiträge: 81
Registriert: 05.02.2009 09:52:53

Re: bash grep zahlenkolonnne in string

Beitrag von AopicieR » 18.09.2009 10:22:10

Hallo,

Deine Beschreibung des Stringmusters verstehe ich nicht. Was heißt z.B. "A und B immer gleich sind"? Klingt für mich so, als seien die eh bekannt und man müsse sich nicht um die kümmern. Wie auch immer, den Teil mit den Ziffern bekommst Du z.B. mit dem Befehl

Code: Alles auswählen

egrep -o '=[0-9]*&' /pfad/zur/datei 
Das -o sorgt dafür, dass nur der passende Teil der Zeile ausgegeben wird. Bitte erkläre den Rest des Musters genauer, vielleicht an ein paar Beispielen.

€: Vielleicht tut

Code: Alles auswählen

grep -o '\([a-z]\)\1*=[0-9]*&\([a-z]\)\2*' /tmp/test
was Du willst. Bei einer /tmp/test mit Inhalt

Code: Alles auswählen

ddasfssss=342&ddddsafsadffffff=343422&eeeeeesaf=sdaf2&
lautet die Ausgabe

Code: Alles auswählen

ssss=342&dddd
ffffff=343422&eeeeee

root2root
Beiträge: 168
Registriert: 22.10.2007 13:06:29

Re: bash grep zahlenkolonnne in string

Beitrag von root2root » 18.09.2009 11:03:58

Hallo tantris
A und B immer gleich sind"? Klingt für mich so, als seien die eh bekannt
soll heissen daß die exemplarisch angeführten A- und B- Ketten immer den gleichen Text "enthalten", aber Text in A anders lautet als B. Beispiel : Inhalt A-Kette ="Ich benötige heute Menge =". Inhalt B-Kette : "&kg Birnen".

Dieser Text ist ebenfalls Bestandteil des Suchmusters, so daß das der Befehl Suchmuster eventuell so

# egrep -o 'Ich benötige heute Menge =[0-9]*&kg Birnen' /pfad/zur/datei

aussehen würde ? Stimmt das so ? :roll:

Danke und Gruß
root2root

AopicieR
Beiträge: 81
Registriert: 05.02.2009 09:52:53

Re: bash grep zahlenkolonnne in string

Beitrag von AopicieR » 18.09.2009 11:27:53

Ja, das sollte funktionieren, probiere es doch einfach aus.

Antworten