Alle LF finden mit grep, perl ...
-
- Beiträge: 269
- Registriert: 01.10.2005 16:45:42
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Winterthur, selten auch Eisenach
Alle LF finden mit grep, perl ...
Hallo zusammen, bin ein wenig am verzweifeln. Suche und probiere seit 2 Stunden
folgendes findet mir alle Zeilen in allen Dateien unterhalb des aktuellen Verzeichnes in denen irgendeinstringohneleerzeichen vorkommt.
$ grep -r irgendeinstringohneleerzeichen
Ich versuche genau dies für LineFeeds zu machen. Ich will sie nicht ersetzten, und will nur wissen welche Dateien welche haben. Arbeite an einem Projekt mit, bei dem alle Zeilenumbrüche mit CRLF sind, aber es hat zwischendurch einige mit LF. Ich würd gern diese mal anzeigen.
gruss bernd
folgendes findet mir alle Zeilen in allen Dateien unterhalb des aktuellen Verzeichnes in denen irgendeinstringohneleerzeichen vorkommt.
$ grep -r irgendeinstringohneleerzeichen
Ich versuche genau dies für LineFeeds zu machen. Ich will sie nicht ersetzten, und will nur wissen welche Dateien welche haben. Arbeite an einem Projekt mit, bei dem alle Zeilenumbrüche mit CRLF sind, aber es hat zwischendurch einige mit LF. Ich würd gern diese mal anzeigen.
gruss bernd
Stand März 2020:
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch
Re: Alle LF finden mit grep, perl ...
Du findest sie ganz einfach mit:wartburgritter hat geschrieben: Ich versuche genau dies für LineFeeds zu machen. Ich will sie nicht ersetzten, und will nur wissen welche Dateien welche haben.
Code: Alles auswählen
grep \$
(Jede nicht-leere nicht-binaere Datei in Unix sollte mindestens einen LF (im Unix-Jargon ``Newline'') haben.)
Alle Dateien mit CRLF findest du so:Arbeite an einem Projekt mit, bei dem alle Zeilenumbrüche mit CRLF sind, aber es hat zwischendurch einige mit LF. Ich würd gern diese mal anzeigen.
Code: Alles auswählen
grep '^M$'
Vielleicht hilft dir dabei auch unix2dos:
https://en.wikipedia.org/wiki/Unix2dos
Use ed once in a while!
-
- Beiträge: 269
- Registriert: 01.10.2005 16:45:42
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Winterthur, selten auch Eisenach
Re: Alle LF finden mit grep, perl ...
Besten Dank für die Antwort.
Die Invertierung findet wieder alle Zeilenumbrüche
Findet richtigerweise alle Zeilenumbrüche egal ob LF oder CRLF.
Ach in vi lassen sich die Zeilenumbrüche darstellen, dazu einfach die datei im unix-format öffnen, das heisst die CR werden als ^M angezeit und LF gar nicht
Mhh, genau so gings mir x-Sachen schon probiert nichts hat bisher geklappt ...
gruss bernd alias der wartburgitter
EDIT
Testdatei unter http://www.b75.ch/download/LineFeedTest.zip. Musste es zippen sonst ändert der Server oder wer auch immer wieder die Zeilenumbrüche. Vor den Zeilenumbrüchen steht was es für einen Zeilenumbruch hat.
findet bei mir nichtsMeillo hat geschrieben: Alle Dateien mit CRLF findest du so:Code: Alles auswählen
grep '^M$'
Die Invertierung
Code: Alles auswählen
grep -v '^M$'
Code: Alles auswählen
grep \$
Ach in vi lassen sich die Zeilenumbrüche darstellen, dazu einfach die datei im unix-format öffnen, das heisst die CR werden als ^M angezeit und LF gar nicht
Code: Alles auswählen
:e ++ff=unix
gruss bernd alias der wartburgitter
EDIT
Testdatei unter http://www.b75.ch/download/LineFeedTest.zip. Musste es zippen sonst ändert der Server oder wer auch immer wieder die Zeilenumbrüche. Vor den Zeilenumbrüchen steht was es für einen Zeilenumbruch hat.
Stand März 2020:
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch
-
- Beiträge: 287
- Registriert: 05.02.2013 19:47:41
Re: Alle LF finden mit grep, perl ...
'^M$' meint hier C-v Enter. (' Control+v Enter $ ')wartburgritter hat geschrieben:findet bei mir nichtsMeillo hat geschrieben: Alle Dateien mit CRLF findest du so:Code: Alles auswählen
grep '^M$'
du suchst also:
Code: Alles auswählen
grep -v '^M$' LineFeedTest.txt # literal
LF
LF
LF
LF
LF
Code: Alles auswählen
grep -vP '\xd$'
-der_linux_cowboy --- Besser werden! ... f*** w$$
-
- Beiträge: 269
- Registriert: 01.10.2005 16:45:42
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Winterthur, selten auch Eisenach
Re: Alle LF finden mit grep, perl ...
Vielen Vielen Dank funktioniert hier auch , kannst evtl. ne kleine Erklärung geben wo das herkommt oder link schicken? Auf "Ctrl + v + Enter" wäre ich jetzt im Leben nie gekommen ?! Da hab ich ne Wissenslücke.linuxCowboy hat geschrieben: '^M$' meint hier C-v Enter. (' Control+v Enter $ ')
gruss bernd der wartburgritter
Stand März 2020:
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch
-
- Beiträge: 287
- Registriert: 05.02.2013 19:47:41
Re: Alle LF finden mit grep, perl ...
Das ist ein bash readline command.
Infos: help bind
Infos: man bash
Den Steuercode erzeugst du mit Control und dem entsprechenden Buchstaben im Alphabet.
A=1, B=2,... J=10=0A,... M=13=0D=Enter,...
Grüße,
Code: Alles auswählen
bind -q quoted-insert
quoted-insert can be invoked via "\C-q", "\C-v".
Code: Alles auswählen
quoted-insert (C-q, C-v)
Add the next character typed to the line verbatim. This is how to insert characters like C-q, for example.
Den Steuercode erzeugst du mit Control und dem entsprechenden Buchstaben im Alphabet.
A=1, B=2,... J=10=0A,... M=13=0D=Enter,...
Grüße,
-der_linux_cowboy --- Besser werden! ... f*** w$$
-
- Beiträge: 269
- Registriert: 01.10.2005 16:45:42
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Winterthur, selten auch Eisenach
Re: Alle LF finden mit grep, perl ...
Danke für die Info
Stand März 2020:
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch
-
- Beiträge: 134
- Registriert: 03.02.2011 11:11:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Frankfurt
Re: Alle LF finden mit grep, perl ...
Du kannst auch nach dem literalen '^M' greppen, wenn du ein cat -v Filter vorweg stellst
Code: Alles auswählen
cat -v test.txt | grep '\^M$'
AAA^M
BBB^M
CCC^M
-
- Beiträge: 269
- Registriert: 01.10.2005 16:45:42
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Winterthur, selten auch Eisenach
Re: Alle LF finden mit grep, perl ...
Obiges findet hier seit monaten zeilen perfekt zeilen mit unix line endings (lf). Weiss jemand wie das kommando für windows line endings (cr lf) und osx line endings lautet?linuxCowboy hat geschrieben: es geht auch:Code: Alles auswählen
grep -vP '\xd$'
Stand März 2020:
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch
Re: Alle LF finden mit grep, perl ...
LOL, die Frage ist echt zu lustig, wenn man verstanden hat, was das Kommando macht!wartburgritter hat geschrieben:Obiges findet hier seit monaten zeilen perfekt zeilen mit unix line endings (lf). Weiss jemand wie das kommando für windows line endings (cr lf) und osx line endings lautet?linuxCowboy hat geschrieben: es geht auch:Code: Alles auswählen
grep -vP '\xd$'
Aber gute Witze zu erklaeren macht irgendwie keinen rechten Spass ...
(Tipp: Die Manpage zu grep(1) koennte im Bezug auf die Flags weiterhelfen.)
Use ed once in a while!
Re: Alle LF finden mit grep, perl ...
Falls Ihr git benutzt, lies mal den Abschnitt "Formatierungen und Leerzeichen",
(core.autocrlf sagt git wie es mit "Windowszeilenenden" umgehen soll):
https://git-scm.com/book/de/v1/Git-indi ... figuration
(core.autocrlf sagt git wie es mit "Windowszeilenenden" umgehen soll):
https://git-scm.com/book/de/v1/Git-indi ... figuration
Re: Alle LF finden mit grep, perl ...
Okay, jetzt nochmal konstruktiv:wartburgritter hat geschrieben:Obiges findet hier seit monaten zeilen perfekt zeilen mit unix line endings (lf). Weiss jemand wie das kommando für windows line endings (cr lf) und osx line endings lautet?linuxCowboy hat geschrieben: es geht auch:Code: Alles auswählen
grep -vP '\xd$'
Das von dir gepostete Kommando sucht tatsaechlich Windowszeilenumbrueche und invertiert dann (mittels `-v') das Ergebnis, wodurch du alle nicht-Windows-Umbrueche ausgegeben bekommst, und das sind wiederum die Unix-Umbrueche. Wenn du nun die Zeilen mit Windows-Umbruch haben willst, dann musst du nur das `v' in dieser Zeile entfernen! (Das ist halt wie wenn man fragt, wie man den Absolutbetrag von `-15' herausfindet.)
MacOS X Zeilenenden sind die gleichen wie die von Unix, weil das MacOS mit dem `X' auf Unix basiert. Meinen tust du wohl eher alte MacOS-Zeilenenden, die nur aus `\r' bestehen. Ich habe damit keine Praxiserfahrung gesammelt, vermute jedoch, dass die aus Unix-Sicht nicht als Zeilentrenner angesehen werden und du deshalb (Unix-)zeilenorientierte Tools wie grep(1) nicht dafuer verwenden kannst.
Use ed once in a while!
-
- Beiträge: 269
- Registriert: 01.10.2005 16:45:42
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Winterthur, selten auch Eisenach
Re: Alle LF finden mit grep, perl ...
@Meillo:
danke für die Erläuterungen.
gruss bernd alias der wartburgritter
danke für die Erläuterungen.
gruss bernd alias der wartburgritter
Stand März 2020:
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch
Re: Alle LF finden mit grep, perl ...
Witzig, das ist echt nicht wirklich vorgesehen. Wir basteln uns ein MacOS (File):Meillo hat geschrieben:MacOS X Zeilenenden sind die gleichen wie die von Unix, weil das MacOS mit dem `X' auf Unix basiert. Meinen tust du wohl eher alte MacOS-Zeilenenden, die nur aus `\r' bestehen. Ich habe damit keine Praxiserfahrung gesammelt, vermute jedoch, dass die aus Unix-Sicht nicht als Zeilentrenner angesehen werden und du deshalb (Unix-)zeilenorientierte Tools wie grep(1) nicht dafuer verwenden kannst.
Code: Alles auswählen
cosmac@turtur:/tmp$ echo -e -n 'blog.fefe.de\rimgur.com\rdf.de\r' > foo
cosmac@turtur:/tmp$ file foo
foo: ASCII text, with CR line terminators
cosmac@turtur:/tmp$ more foo
df.de.com.de
cosmac@turtur:/tmp$ cat foo
cosmac@turtur:/tmp$ view foo
blog.fefe.de^Mimgur.com^Mdf.de^M
"foo" [noeol] 1L, 29C
~
Beware of programmers who carry screwdrivers.
Re: Alle LF finden mit grep, perl ...
Warum auch? In Unix ist das Newline-Zeichen der Zeilentrenner ... warum haette man dort Kompatibilitaetscode fuer eine anderen Art von Zeilentrenner einbauen sollen, deren Betriebssystem erst mehr als zehn Jahre spaeter entwicklet worden ist?cosmac hat geschrieben: Witzig, das ist echt nicht wirklich vorgesehen. Wir basteln uns ein MacOS (File):
Viel seltsamer ist, dass Mac OS nicht auch das Newline-Zeichen verwendet hat ... und ebenso seltsam ist, dass DOS die CRLF-Kombination verwendet, wo es in seiner Kultur im Vergleich zu Unix viel weiter weg ist von Typewritern, auf die diese Kombination gruendet.
Use ed once in a while!
Re: Alle LF finden mit grep, perl ...
Weil es Unix ist Die zehn Jahre sind natürlich ein kleines Problem...Meillo hat geschrieben:In Unix ist das Newline-Zeichen der Zeilentrenner ... warum haette man dort Kompatibilitaetscode fuer eine anderen Art von Zeilentrenner einbauen sollen, deren Betriebssystem erst mehr als zehn Jahre spaeter entwicklet worden ist?
Vielleicht war das keine bewusste Entscheidung, man hat den ASCII Code übernommen und da ist es eben so Typewriter-mäßig definiert. Die Kombination ist aber auch für Textkonsolen aus Glas praktisch, man braucht ja beide Funktionen einzeln.Meillo hat geschrieben:ebenso seltsam ist, dass DOS die CRLF-Kombination verwendet, wo es in seiner Kultur im Vergleich zu Unix viel weiter weg ist von Typewritern, auf die diese Kombination gruendet.
Beware of programmers who carry screwdrivers.