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

sed script als perl einzeiler



<< >> 7 Einträge, 1 Seite
dukerw
 2004-03-24 16:49
#81200 #81200
User since
2003-08-20
17 Artikel
BenutzerIn
[default_avatar]
servus,

ich habe ein sed script in der form
Code: (dl )
awk '{ if (/^export/) { print | "sed -e s|\\|/|g" } else { print } }' dasScript


in der datei "dasScript" soll in allen zeilen die mit "export" beginnen alle "\" gegen "/" ausgetauscht werden.
klingt soweit ganz easy, das sed-awk script funzt aber irgendwie nich richtig. gibbet für diese zeile auch ein äquivalent in perl, so dass ich es als perl einzeiler ausführen kann mit
Code: (dl )
perl -e '...'
Thx, der Duke.
ptk
 2004-03-24 17:44
#81201 #81201
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ungetestet:
Code: (dl )
perl -nle 'if (/^export/) { s|\\|/|g } print' dasScript
frodus
 2004-03-24 17:46
#81202 #81202
User since
2003-09-26
147 Artikel
BenutzerIn
[default_avatar]
Versuchs mal so:

perl -e 'while(<>) {if (/^export/) { s/\\/\//}; print;};'
Strat
 2004-03-24 19:54
#81203 #81203
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
while(<>) { .... }

entspricht dem Parameter -n
Code: (dl )
1
2
3
4
while (<>) {
...
print;
}

entspricht dem Parameter -p

da es sich um eine einfache ersetzung eines Zeichens durch ein anderes handelt, duerfte da tr eine bessere wahl sein als s(ed)

dann noch das if durch ein and ersetzen, und man kommt zu einer recht kurzen loesung
Code: (dl )
perl -pe '/^export/ and tr~\\~/~' dasScript > out.script

oder gleich in der datei ersetzen:
Code: (dl )
perl -i.bak -pe '/^export/ and tr~\\~/~' dasScript

dann wird die originaldatei unter dasScipt.bak abgelegt

unter Unix kann man auch auf das backup verzichten (nicht jedoch unter Windows):
Code: (dl )
perl -i -pe '/^export/ and tr~\\~/~' dasScript


-l ist da uebrigens ueberfluessig, weil in der datei sowieso schon zeilenumbrueche stehen...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Crian
 2004-03-25 12:44
#81204 #81204
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
und das n, das Du oben erklärt hast, braucht man nicht?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Relais
 2004-03-25 13:13
#81205 #81205
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es gibt da dann noch ein mit Perl ausgeliefertes Programm namens a2p. Das liest ein awk-Programm ein und spuckt dann ein Perl-Programm aus, das das gleiche tun sollte. 8)
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
Strat
 2004-03-25 15:08
#81206 #81206
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Crian,25.03.2004, 11:44]und das n, das Du oben erklärt hast, braucht man nicht?[/quote]
-p entspricht -n plus print; => also nein
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 7 Einträge, 1 Seite



View all threads created 2004-03-24 16:49.