Thread Stings vergleichen
(11 answers)
Opened by Rennofen at 2017-10-12 22:23
Ich habe nie gesagt, dass ich schönen Code mache.
N sind Zeilennummern, bei Gcode kann man so Schleifen basteln. Ich fange das ab um später ggf die Zeilennummer auch noch zu löschen Ist halt Maschinensteuerung nach DIN. Heute würde man sich um Codereduzierung Keinen kopf machen, Speicher ist ja kein Mangel. Ich muss aber mit 20Kbyte auskommen, da schaut man dann schon, wo man einzelne Zeichen einspaaren kann. Aber danke für dein Beispiel es macht exakt was ich will habe es nur nen bisschen angepasst. Kurz ich hole mir ggf einen Dateinamen aus der Commandline und ein weiteres Argument ob die Zeilennummern entfernt werden sollen. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #!/bin/perl use v5.18; use warnings; my ($g, $f) = ('G', 'F'); my $filename = '1001.nc'; if ($ARGV[0]){$filename=$ARGV[0];} my $arg1 = 0; if ($ARGV[1]){$arg1=$ARGV[1];} open(my $fh, '<:encoding(UTF-8)', $filename) or die "Could not open file '$filename' $!"; while (my $row = <$fh>) { $row =~ s/\r?\n$//; my $newrow; for my $word (split / /, $row){ # say ''; given (substr($word, 0, 1)) { when ('N') { if ($arg1 == 1) {next} } when ('G') { if ($word ne $g) { $g = $word } else { next } } when ('F') { if ($word ne $f) { $f = $word } else { next } } } $newrow=$newrow. " $word"; } $newrow=~ s/^\s+|\s+$//g; $newrow=$newrow."\n"; print $newrow; } Danke Patrick |