PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Keine Freude mit egrep und tabs



sutterp
04-08-2004, 11:55
Versuch in einer Date alle Zeilen zu finden welche ein Tab Zeichen enthalten.

Generiere eine Datei mit einem Tab Zeichen
$echo -e "Vor tab\t\tNach tab" > x.x

Wie sieht der Inhalt aus?
$cat x.x
Vor tab\t\tNach tab


Finde Zeilen mit Tab Zeichen
$egrep -i --color '\t' x.x
Vor tab\t\tNach tab

Warum?
laut man re_syntax - \t horizontal tab, as in C
laut man re_syntax - \xhhh (where hhh is any sequence of hexadecimal digits) the character whose hexadec*imal value is 0xhhh (a single character no matter how many hexadecimal digits are used

Also versuche ich dies
$egrep -i --color '\x009' x.x

Findet nichts.

Wie macht mans richtig?

Vielen Dank


Peter

peschmae
04-08-2004, 13:13
#!/bin/bash
egrep -i --color ' ' x.x


Funktioniert korrekt - wobei ' ' ein Tab ist.

MfG Peschmä

RapidMax
04-08-2004, 13:14
Daran bin ich auch schon gescheitert. \t funktioniert auf keinen meiner Systeme. Abhilfe: Einen "echten" Tab verwenden.

Gruss, Andy

sutterp
05-08-2004, 06:09
#!/bin/bash
egrep -i --color ' ' x.x


Funktioniert korrekt - wobei ' ' ein Tab ist.


Wie macht man das interaktiv von der Kommando Zeile?

peschmae
05-08-2004, 08:35
Mit dem Holzhammer:


egrep -i --color "$(echo -e '\t')" x.x

oder alternativ (mit dem export z.B. in Bashrc oder so):


export TAB="$(echo -e '\t')"
egrep -i --color "$TAB" x.x


MfG Peschmä

sutterp
05-08-2004, 09:49
Mit dem Holzhammer:

Vielen Dank.

Bis jetzt hab ich das mit dem Holzhammer gemacht, fand es aber unschoen (bin manchmal ein Perfektionist) extra einen Prozess zu starten und eine Variable definieren nur um ein Spezialzeichen zu generieren.

Ja, ich hab im Augenblick zuviel Zeit und revidiere meine Scripts.

Peter

peschmae
06-08-2004, 08:54
Celindir hat mir ohne es zu bemerken den Tipp gegeben :D

Mach mal
set | grep IFS
da kommt
IFS=$' \t\n'

d.h. du versuchst jetzt


grep -i --color $'\t' x.x


MfG Peschmä

sutterp
06-08-2004, 09:32
Vielen Dank,

Das gefällt mir wesentlich besser, ist einfacher zum schreiben und besser lesbar.

Das voranstellen des $-Zeichens muss ich mir wirklich merken.

Manchmal geht das Gehirn seine eigenen Wege, sehr oft ändere ich IFS in meinen Scripts und definiere auch Variablen auf diese Art, hab aber im Zusammenhang mit grep ueberhaupt nicht daran gedacht. Na, ich werd halt alt.

Peter