(4 respuestas)
Cerrado hace 2 años.
Tengo un archivo que contiene líneas:
india;austria;japan;chile
china;US;nigeria;mexico;russia
Quiero reemplazar todas las apariciones de punto y coma en cada línea con, p. ;NEW; , pero a partir de la segunda ocurrencia solamente. El resultado debería verse así:
india;austria;NEW;japan;NEW;chile
china;US;NEW;nigeria;NEW;mexico;NEW;russia
Probé esto con gsub, pero reemplaza todas las ocurrencias:awk '/;/{gsub(/;/,";NEW;") }{print}'
Respuesta aceptada:
El awk la solución es mucho más larga, pero es más fácil hacerla genérica:
awk -F; '{for(i=1;i<NF;i++)printf"%s;%s",$i,(i>=2)?"NEW;":"";print$NF}' replacefile
Es posible hacerlo con sed también, haciendo un bucle con la t comando y siempre reemplazando el segundo separador (o el que desee) en alguna marca temporal (generalmente n ):
sed ':b;s/;/n/2;tb;s/n/;NEW;/g' replacefile