Schrift
[thread]8811[/thread]

Zeilenumbruch erzwingen

Leser: 2


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
Duff
 2007-03-05 17:48
#74785 #74785
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Hallo,

ich komme irgendwie nicht weiter.

Ich will eigentlich nur (einzeiler) aus einer Datei ohne Zeilenumbrüche, immer nach den Tags </irgendeinInhalt> einen Zeilenumbruch haben.
D'OH
Daniel
topeg
 2007-03-05 18:55
#74786 #74786
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Hast du es schon so versucht?
Code (perl): (dl )
$data=~s/(<\/irgendeinInhalt>)/$1\n/g;

oder so?
Code (perl): (dl )
$data=~s/(?<=<\/irgendeinInhalt>)/\n/g;
pq
 2007-03-05 20:07
#74787 #74787
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
@duff: wenn es wirklich so simpel ist, kannst du prima topegs lösung
verwenden; behalte nur im kopf, dass es bei komplexeren aufgaben
im bereich html parsing empfiehlt, auf eins der cpan-module dafür umzusteigen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Duff
 2007-03-06 09:14
#74788 #74788
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Ja danke, aber so einfach ist es für mich leider nicht.

Ich möchte das ganze gerne mit einem Einzeiler lösen. Die Datei ist eine Art xml-Datei, in der ich also immer nach einem </<irgendeinInhalt>> einen Zeilenumbruch habe möchte.

Wollte es mit perl -ne anfangen, weil das -n ja alles Einliest, wenn ich z.B. noch eine Datei mit angebe und -e für Argumente bei einem Einzeiler in perl steht.

Aber irgendwie bekomme ich dass mit dem substitude und dem Zeilenumbruch noch nicht hin.
D'OH
Daniel
MisterL
 2007-03-06 09:22
#74789 #74789
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Das muss man wohl eher mit regulären Ausdrücken arbeiten und diese mit einer boolschen Variablen kombinieren
“Perl is the only language that looks the same before and after RSA encryption.”
Duff
 2007-03-06 09:42
#74790 #74790
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Hatte es ungefähr so gedacht, dass ich in dem substitude einen regulären Ausdruck verwende.

Code: (dl )
s/(</[A-Za-z]*)/$1\n/g
D'OH
Daniel
Linuxer
 2007-03-06 10:40
#74791 #74791
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
Folgendes erfolgreich getestet:

Code: (dl )
echo "<html><head><title>heute ohne umbruch</title></head><body><b>Heute</b><i>ohne</i><u>Umbruch</u>.</body></html>" | perl -pe 's{(</\w+>)}{$1\n}g'


edit: Code Tags gesetzt\n\n

<!--EDIT|Linuxer|1173170456-->
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
renee
 2007-03-06 10:53
#74792 #74792
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Als Einzeiler:
Code: (dl )
perl -ne 's!(</irgendeinInhalt>)!$1\n!g; print ' < entwicklung/test.xml


test.xml:
Code: (dl )
1
2
 Das ist ein Test </irgendeinInhalt> asdljlasdf  </irgendeinInhalt> alskdjfpqweirumvasdf  </irgendeinInhalt> asdlfjasdföjasdf  </irgendeinInhalt>
asdfkjökjw2oi </irgendeinInhalt> </irgendeinInhalt>asldfj </irgendeinInhalt>


Ausgabe:
Code: (dl )
1
2
3
4
5
6
7
8
9
~ 2> perl -ne 's!(</irgendeinInhalt>)!$1\n!g; print ' < entwicklung/regex.pl 
Das ist ein Test </irgendeinInhalt>
asdljlasdf </irgendeinInhalt>
alskdjfpqweirumvasdf </irgendeinInhalt>
asdlfjasdföjasdf </irgendeinInhalt>

asdfkjökjw2oi </irgendeinInhalt>
</irgendeinInhalt>
asldfj </irgendeinInhalt>
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Duff
 2007-03-06 10:55
#74793 #74793
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Wow, danke.
So funktioniert es.

Hatte wohl den Schalter
Code: (dl )
-p              assume loop like -n but print line also, like sed

übersehen.

Aber wie ist dein substitute zu verstehen?
Wieso benutzt du { und } Zeichen?

Sorry, aber würde gerne verstehen, was du genau machst.
Danke.
D'OH
Daniel
pq
 2007-03-06 11:08
#74794 #74794
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Duff,06.03.2007, 09:55]Aber wie ist dein substitute zu verstehen?
Wieso benutzt du { und } Zeichen?[/quote]
damit man den slash nicht escapen muss, erlaubt perl fast beliebige
begrenzer für regexes.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2007-03-05 17:48.