Thread Stings vergleichen (11 answers)
Opened by Rennofen at 2017-10-12 22:23

Rennofen
 2017-10-13 14:49
#187515 #187515
User since
2017-10-12
6 Artikel
BenutzerIn
[default_avatar]
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

View full thread Stings vergleichen