Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8892[/thread]

Datei in eine Zeile ausgeben: '$1', '$2', ...: Perl-Einzeiler

Leser: 1


<< |< 1 2 >| >> 19 Einträge, 2 Seiten
Duff
 2007-03-30 09:58
#75550 #75550
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Hallo,

ich habe eine Datei, die ungefähr so aussieht:

12345678
91234567
89123456
78912345
67891234
56789123
....

Ich möchte nun diese Datei mit einem Perl-Einzeiler so umgestalten, dass sie danach so aussieht:

'12345678', '91234567', '89123456', '78912345', usw.

Bin bisher soweit:
Code: (dl )
perl -p -e 's/^(\d+)\n/$1 /g'


Ok, wenn es nach funktionieren sollte, muss ich noch den Schalter -i hinzufügen, damit auch editiert wird.

Aber wie muss ich die '-Zeichen um $1 einbringen. Ein Escapen mit \' brachte auch nichts.

Danke.
D'OH
Daniel
renee
 2007-03-30 10:50
#75551 #75551
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
perl -p -e 's/^(\d+)\n/chr(39) . $1 . chr(39)/e'
ungetestet...
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-30 11:06
#75552 #75552
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Danke.

Wie kommt man auf sowas?
Wo kann man das nachlesen?

Ich hätte aber zusätzlich noch gerne ein , zwischen den ''.
D'OH
Daniel
renee
 2007-03-30 11:19
#75553 #75553
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wie man auf so etwas kommt? Wenn man ' nicht direkt verwenden kann, muss man schauen, wie man es noch darstellen kann. Dann kommt man vielleicht auf chr(39). Damit man das einsetzen kann, muss man allerdings den Ausdruck evaluieren, daher dann der e-modifier...


Aber mich wundert es etwas, dass man das ' nicht escapen kann...
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/
renee
 2007-03-30 11:24
#75554 #75554
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Man kann's auch ohne das Evaluieren machen:
Code: (dl )
perl -p -e 'my $s = chr(39); s/^(\d+)\n/$s$1$s,/'
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-30 11:58
#75555 #75555
User since
2006-10-06
283 Artikel
BenutzerIn

user image
So funktioniert es.

Woher weiß man, dass chr(39) dem '-Zeichen entspricht.
Wie sieht es bei anderen Zeichen aus?
D'OH
Daniel
bo
 2007-03-30 12:03
#75556 #75556
User since
2006-05-09
76 Artikel
BenutzerIn
[default_avatar]
ASCII-Tabelle
renee
 2007-03-30 12:07
#75557 #75557
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Oder wenn man keine ASCII-Tabelle zur Hand hat, kann man auch das machen:
Code: (dl )
perl -e "print ord($zeichen)"
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/
vayu
 2007-03-30 13:11
#75558 #75558
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Linuxer
 2007-03-30 13:18
#75559 #75559
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
Code: (dl )
1
2
3
4
5
6
echo "12345678
91234567
89123456
78912345
67891234
56789123" | perl -pe "s/^(\d+)\n/'\$1', /g"
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!
<< |< 1 2 >| >> 19 Einträge, 2 Seiten



View all threads created 2007-03-30 09:58.