Pe data de S�m 14 Dec 2002 09:45, Alin Nastac a scris:
> Iata un punct de start:
> awk -F. '/[0-9]+\./ { var=$1; var=var -1; printf "%d.%s\n", var, $2; }'
There is a bug :
daca ai o linie de genul:
2. linia nr. x
solutia ta va afisa numai:
1. linia nr
(folosind '.' ca separator tragi concluzia [pripita] ca $2 este tot restul
liniei, dar ce te faci daca mai ai si alte puncte in continuare ?)
Propun o solutie mai clara:
#!/bin/bash
while read line
do
nr=`echo $line | cut -d '.' -f1`
let nr=nr-1
if [ $nr -lt 0 ]
then
echo $line >> fis.out
else
echo $nr. `echo $line | cut -d '.' -f2-` >> fis.out
fi
done < fis.in
Daca gasesc o linie care nu satisface conditiile initiale (e.g. o linie goala
sau cu alt text pe ea) o trimit la output intacta.
> >De cateva zile imi rup creieru' cu urmatoarea problema shi nu reushesc sa
> > o solutzionez (poate's eu prost, dar asta nu e nou :) ).
> >
> >Fiind un fishier de forma:
> >
> >1. linia 1
> >2. linia 2
> >3. linia 3
> >...
> >
> >sa se transforme fishierul asta in formatul:
> >
> >0. linia 1
> >1. linia 2
> >2. linia 3
> >
> >Ma ajutatzi va rog? Cel putzin mie nu'mi iese.
> >
> >Shi intrebarea cea mai idioata: sed nu shtie de 's/^c+//' shi forme
> >echivalente? Ca vad ca in general la '+' uita sa mai interpreteze
> > patternu'.
la sed trebuie sa dai \+ daca vrei sa faci match pe una sau mai multe valori.
Mihai
---
Pentru dezabonare, trimiteti mail la
[EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
REGULI, arhive si alte informatii: http://www.lug.ro/mlist/