Hi, ich muss Euch mal wegen eines regexes konsultieren... ich will von Mailquelltexten den ganzen Serverkram entfernen, mit tr und sed mache ich aus jeder Mail eine Zeile, die mit dem üblichen "From <Absender>" beginnt und dann möchte ich mit sed -e 's/From\ www-data@myserver\N*Beginn\ des\ Textes://g' den vorderen Teil entfernen. Auf https://regex101.com/ kann man den regex "/From\ www-data@myserver\N*Beginn\ des\ Textes:/" prüfen, er markiert genau den Bereich, den ich möchte. Aber wenn ich das ganze im sed verwende, ersetzt sed das nicht, auch mit '/<regex>/d' kommt nix anderes raus. Hat jemand eine Idee, wo es klemmt? -- cu jth
On Fr, 21 Jun 2024, Jörg Thümmler wrote:
ich will von Mailquelltexten den ganzen Serverkram entfernen, mit tr und sed mache ich aus jeder Mail eine Zeile, die mit dem üblichen "From <Absender>" beginnt und dann möchte ich mit
sed -e 's/From\ www-data@myserver\N*Beginn\ des\ Textes://g' den vorderen Teil entfernen.
Auf https://regex101.com/ kann man den regex "/From\ www-data@myserver\N*Beginn\ des\ Textes:/" prüfen, er markiert genau den Bereich, den ich möchte. Aber wenn ich das ganze im sed verwende, ersetzt sed das nicht, auch mit '/<regex>/d' kommt nix anderes raus.
Hat jemand eine Idee, wo es klemmt?
Prüfe mal deine Regex, \N dürfte sed nicht verstehen. Was soll das denn matchen? Viele Grüße, Christian -- Ha. I say let them try -- even vi+perl couldn't match the power of an editor which is, after all, its own OS. ;-) -- Johnie Ingram on debian-devel, about linking vim with libperl.so
Am 21.06.24 um 10:43 schrieb Christian Brabandt:
On Fr, 21 Jun 2024, Jörg Thümmler wrote:
ich will von Mailquelltexten den ganzen Serverkram entfernen, mit tr und sed mache ich aus jeder Mail eine Zeile, die mit dem üblichen "From <Absender>" beginnt und dann möchte ich mit
sed -e 's/From\ www-data@myserver\N*Beginn\ des\ Textes://g' den vorderen Teil entfernen.
Auf https://regex101.com/ kann man den regex "/From\ www-data@myserver\N*Beginn\ des\ Textes:/" prüfen, er markiert genau den Bereich, den ich möchte. Aber wenn ich das ganze im sed verwende, ersetzt sed das nicht, auch mit '/<regex>/d' kommt nix anderes raus.
Hat jemand eine Idee, wo es klemmt?
Prüfe mal deine Regex, \N dürfte sed nicht verstehen. Was soll das denn matchen?
Viele Grüße, Christian
hmm, vielleicht ist das tatsächlich falsch, \N* habe ich von der regex-Seite, soll alles außer Zeilenende matchen. Aber eigentlich habe ich immer gedacht, sed arbeitet eh zeilenweise und vorher hab ich es deshalb mit .* versucht, aber da hat es auch nicht geklappt, hat auch nichts ersetzt oder gelöscht. Hätte verstanden, wenn es zuviel - bis zum letzten Auftreten von "Beginn\ des\ Textes:" überhaupt gelöscht hätte... -- cu jth
Am 21.06.24 um 12:15 schrieb Jörg Thümmler:
Am 21.06.24 um 10:43 schrieb Christian Brabandt:
On Fr, 21 Jun 2024, Jörg Thümmler wrote:
ich will von Mailquelltexten den ganzen Serverkram entfernen, mit tr und sed mache ich aus jeder Mail eine Zeile, die mit dem üblichen "From <Absender>" beginnt und dann möchte ich mit
sed -e 's/From\ www-data@myserver\N*Beginn\ des\ Textes://g' den vorderen Teil entfernen.
Auf https://regex101.com/ kann man den regex "/From\ www-data@myserver\N*Beginn\ des\ Textes:/" prüfen, er markiert genau den Bereich, den ich möchte. Aber wenn ich das ganze im sed verwende, ersetzt sed das nicht, auch mit '/<regex>/d' kommt nix anderes raus.
Hat jemand eine Idee, wo es klemmt?
Prüfe mal deine Regex, \N dürfte sed nicht verstehen. Was soll das denn matchen?
Viele Grüße, Christian
hmm, vielleicht ist das tatsächlich falsch, \N* habe ich von der regex-Seite, soll alles außer Zeilenende matchen. Aber eigentlich habe ich immer gedacht, sed arbeitet eh zeilenweise und vorher hab ich es deshalb mit .* versucht, aber da hat es auch nicht geklappt, hat auch nichts ersetzt oder gelöscht. Hätte verstanden, wenn es zuviel - bis zum letzten Auftreten von "Beginn\ des\ Textes:" überhaupt gelöscht hätte...
Hi, ok "From\ www-data@myserver[^\n]*Beginn\ des\ Textes:" matcht nur innerhalb der aktuellen Zeile... so passts! -- cu jth
On Fr, 21 Jun 2024, Jörg Thümmler wrote:
Am 21.06.24 um 12:15 schrieb Jörg Thümmler:
Am 21.06.24 um 10:43 schrieb Christian Brabandt:
On Fr, 21 Jun 2024, Jörg Thümmler wrote:
mit tr und sed mache ich aus jeder Mail eine Zeile, die mit dem üblichen "From <Absender>" beginnt und dann möchte ich mit sed -e 's/From\ www-data@myserver\N*Beginn\ des\ Textes://g' den vorderen Teil entfernen.
Prüfe mal deine Regex, \N dürfte sed nicht verstehen. Was soll das denn matchen?
hmm, vielleicht ist das tatsächlich falsch, \N* habe ich von der regex-Seite, soll alles außer Zeilenende matchen. Aber eigentlich habe ich immer gedacht, sed arbeitet eh zeilenweise und vorher hab ich es deshalb mit .* versucht, aber da hat es auch nicht geklappt, hat auch nichts ersetzt oder gelöscht. Hätte verstanden, wenn es zuviel - bis zum letzten Auftreten von "Beginn\ des\ Textes:" überhaupt gelöscht hätte...
ok "From\ www-data@myserver[^\n]*Beginn\ des\ Textes:" matcht nur innerhalb der aktuellen Zeile... so passts!
Wenn du mit tr und sed aus jeder mail eine Zeile machst, wo kommt denn dann der Zeilenumbruch her, den du nicht matchen möchtest? Aber im Allgemeinen erscheint mir das alles ein bißchen fragil und umständlich? Viele Grüße, Christian -- The brain is a wonderful organ; it starts working the moment you get up in the morning, and does not stop until you get to work.
Am 21.06.24 um 13:45 schrieb Christian Brabandt:
On Fr, 21 Jun 2024, Jörg Thümmler wrote:
Am 21.06.24 um 12:15 schrieb Jörg Thümmler:
Am 21.06.24 um 10:43 schrieb Christian Brabandt:
On Fr, 21 Jun 2024, Jörg Thümmler wrote:
mit tr und sed mache ich aus jeder Mail eine Zeile, die mit dem üblichen "From <Absender>" beginnt und dann möchte ich mit sed -e 's/From\ www-data@myserver\N*Beginn\ des\ Textes://g' den vorderen Teil entfernen.
Prüfe mal deine Regex, \N dürfte sed nicht verstehen. Was soll das denn matchen?
hmm, vielleicht ist das tatsächlich falsch, \N* habe ich von der regex-Seite, soll alles außer Zeilenende matchen. Aber eigentlich habe ich immer gedacht, sed arbeitet eh zeilenweise und vorher hab ich es deshalb mit .* versucht, aber da hat es auch nicht geklappt, hat auch nichts ersetzt oder gelöscht. Hätte verstanden, wenn es zuviel - bis zum letzten Auftreten von "Beginn\ des\ Textes:" überhaupt gelöscht hätte...
ok "From\ www-data@myserver[^\n]*Beginn\ des\ Textes:" matcht nur innerhalb der aktuellen Zeile... so passts!
Wenn du mit tr und sed aus jeder mail eine Zeile machst, wo kommt denn dann der Zeilenumbruch her, den du nicht matchen möchtest? Aber im Allgemeinen erscheint mir das alles ein bißchen fragil und umständlich?
Viele Grüße, Christian
Hi, ich mache aus jeder Mail eine Zeile - in der Datei sind also n Zeilen mit n Mails. Jetzt möchte ich die "Köpfe" entfernen, damit ich nur die - zum Teil durch die Webanwendung aus der sie kommen strukturierten - Inhalte bekomme, damit ich die analysieren kann. Hintergrund ist, das ich Mails in der Datei, die ein bestimmtes Feld identisch haben, nicht doppelt haben möchte, sondern die strukturierten Ihnhalte dann zusammenfassen möchte. Z.B., weil ein Benutzer noch was "nachreicht"... Auch wenn es umständlich wirkt, den Kram erst in die DB zu laden und dann auseinanderzunehmen, ist noch umständlicher... Wenn ich an das sed dann sort anschließe, bekomme ich das "mundgerecht" - die "Nachreichungen" sofort nach der Erstmail... -- cu jth
participants (2)
-
Christian Brabandt
-
Jörg Thümmler