(4 risposte)
Chiuso 2 anni fa.
Ho un file contenente delle righe:
india;austria;japan;chile
china;US;nigeria;mexico;russia
Voglio sostituire tutte le occorrenze del punto e virgola su ogni riga con ad es. ;NEW;
, ma solo a partire dalla 2a occorrenza. Il risultato dovrebbe assomigliare a questo:
india;austria;NEW;japan;NEW;chile
china;US;NEW;nigeria;NEW;mexico;NEW;russia
L'ho provato con gsub, ma sostituisce tutte le occorrenze:awk '/;/{gsub(/;/,";NEW;") }{print}'
Risposta accettata:
Il awk
soluzione è molto più lunga, ma è più facile renderla generica:
awk -F; '{for(i=1;i<NF;i++)printf"%s;%s",$i,(i>=2)?"NEW;":"";print$NF}' replacefile
È possibile farlo con sed
anche, facendo un ciclo con il t
comando e sostituendo sempre il 2° (o quello che vuoi) separatore in un segno temporaneo (di solito n
):
sed ':b;s/;/n/2;tb;s/n/;NEW;/g' replacefile