grep oder sed mit hex-werten [Gelöst]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

grep oder sed mit hex-werten [Gelöst]

Beitrag von heinz » 07.08.2014 17:41:19

Hallo Zusammen,

ich habe ein altes script mit haufenweise configurations-dateien in denen
das Paragraph-Zeichen verwendet wurde.

Nach dem Umzug auf ein aktuelles System werden die Zeichen aber nur noch
als "invertierte fragezeichen" angezeigt.

Wie schaff ich es eine Entsprechung des Zeichens zu finden, um mit
grep oder sed danach zu suchen? (Wie grept man z.B. nach 0xA7?)

gruß heinz
Zuletzt geändert von heinz am 11.08.2014 19:02:46, insgesamt 1-mal geändert.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: grep oder sed mit hex-werten

Beitrag von Cae » 07.08.2014 18:02:14

Code: Alles auswählen

$ printf 'foo\nmatch: \x1f\nbar\n' | cat -v
foo
match: ^_
bar
$ printf 'foo\nmatch: \x1f\nbar\n' | grep -e "$(printf '\x1f')" | cat -v
match: ^_
$ 
Funktioniert allerdings nicht fuer Nullbytes, weil diese das Ende des Arguments kennzeichnen. Da waere evtl. bgrep geeigneter.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: grep oder sed mit hex-werten

Beitrag von heinz » 07.08.2014 18:23:31

Hallo Cae,

Danke für die schnelle Antwort.

Bei mir klappt das irgendwie nicht.

Code: Alles auswählen

grep -e "$(printf '\xa7')" ./datei
findet nichts...
Den Hex-Code des Zeichens 0xa7 habe ich mit mc ermittelt.

gruß heinz

linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: grep oder sed mit hex-werten

Beitrag von linuxCowboy » 08.08.2014 12:26:43

heinz hat geschrieben: Wie grept man z.B. nach 0xA7?
Perl regular expression

Code: Alles auswählen

grep -P '\xA7' file
oder hexdump aus den bsdmainutils

Code: Alles auswählen

hd file | grep a7
Test z.B.:

Code: Alles auswählen

echo '\xa7' | iconv -f cp1252
§
-der_linux_cowboy --- Besser werden! ... f*** w$$

wanne
Moderator
Beiträge: 7462
Registriert: 24.05.2010 12:39:42

Re: grep oder sed mit hex-werten

Beitrag von wanne » 08.08.2014 13:13:19

heinz hat geschrieben:

Code: Alles auswählen

grep -e "$(printf '\xa7')" ./datei
findet nichts...
Den Hex-Code des Zeichens 0xa7 habe ich mit mc ermittelt.
Ja. Grep kann im -e -Mode manche eichen Werte außerhalb von 0x20 und 0x80, nicht. Benutze den -P mode.
rot: Moderator wanne spricht, default: User wanne spricht.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: grep oder sed mit hex-werten

Beitrag von rendegast » 08.08.2014 13:56:55

... configurations-dateien in denen
das Paragraph-Zeichen verwendet wurde.

Nach dem Umzug auf ein aktuelles System werden die Zeichen aber nur noch
als "invertierte fragezeichen" angezeigt.
Vielleicht so?

Code: Alles auswählen

# file win.txt
win.txt: ISO-8859 text, with CRLF line terminators

# cat win.txt | iconv -f ISO-8859-15 -t UTF-8
§
§
$
$
ü
ü

'man iconv', es gibt auch 'piconv' (Debianperl), Debianrecode, Debiankonwert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: grep oder sed mit hex-werten

Beitrag von heinz » 11.08.2014 19:02:22

Vielen Dank an Euch für die Anworten!

Code: Alles auswählen

grep -P "$(printf '\xa7')" file
oder einfacher

Code: Alles auswählen

grep -P '\xA7' file
Funktioniert.

Danke nochmal...
gruß heinz

Antworten