Portál AbcLinuxu, 15. prosince 2025 23:25
Ř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.