[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: rinumerazione valore in un colonna relazionata con altra colonna



On 25/06/2013 16:44, MaX wrote:

qualche idea?


Puoi provare con awk.

Se il tuo input è ordinato rispetto alla seconda colonna:

awk -F, -v OFS=, 'last != $2{ last=$2; counter=0 } { $3="\""counter++"\""; print }' input >output

* -F imposta il separatore dei campi per il file di input,
* OFS è quello per il file di output;
* le variabili $i sono i campi, last e counter le ho definite io;
* il comando print stampa i campi della riga corrente dal primo all'ultimo separati da OFS

Se l'input non è ordinato potresti provare con sort:

sort -t, -k2 input | awk -F, -v OFS=, 'last != $2{ last=$2; counter=0 } { $3="\""counter++"\""; print }' >output

oppure usare gli array associativi di awk:

awk -F, -v OFS=, '!counter[$2]{ counter[$2]=0 } { $3="\""counter[$2]++"\""; print }' input >output


--
Kind regards,
                                                          Marco Romano.


Reply to: