Portál AbcLinuxu, 8. května 2025 02:56
Řešení dotazu:
#!/bin/bash
nebo #!/usr/bin/perl
nebo jakýkoliv jiný jazyk je úplně jedno. Stejně na systému perl už obvykle je, protože dost běžných programů jsou perlové skripty. k tomu scriptu, který tady byl už napsán stačí doplnit jen to #!/usr/bin/perl
a když umíš jiný jazyk, tak to udělej v něm. shell je na takovou ulohu divny, protože obvykle pracuje (posuzuje, mění) s objekty na filesystemu tedy soubory a adresáři v celku, dovnitř leze jen málo když tak jako logové záznamy a pod. Možná ve spolupráci s awk
by to ohnout šlo, ale awk neznám, sice mě periodicky fascinuje jeho uspornost a efektivita, ale nikdy jsem na něj nanašel sílu.
perl6 -e ' my $S2 = "S2".IO.lines.map( *.substr(23,3) ).Set; for "S1".IO.lines -> $l is copy { NEXT {$l.say} next if $l.substr(23,3) ∉ $S2; $l.substr-rw(55,5) = " 2.00"; } 'Z
S2
vytáhnu sloupec 23-26 do množiny.
Jednotlivé řádky z S1
vytisknu nezměněné pokud nenajdu odpovídající shodu v předešlé množině, nebo cokoliv na 55-60 zaměním za 2.00
a pak vytisknu. Na výstupu dostanu nový S1
.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.