(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