Tengo un archivo de texto que tiene algunas líneas como esta (guion repetido)
-------------------------------------------------------Necesito reemplazar estas líneas con el carácter 'B' repetido 1500 veces. por ejemplo, como
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
¿Alguna sugerencia para usar el comando 'sed' o 'awk'?
Con awk :
$ awk '/^-+$/ {s = sprintf("% 1500s", ""); gsub(/ /,"B",s); print s; next} 1' fileO, tal vez un poco más eficiente si tiene muchas líneas de este tipo:
$ awk 'BEGIN {s = sprintf("% 1500s", ""); gsub(/ /,"B",s)} \ /^-+$/ {print s; next} 1' filepienso
perl -pe 'my $bb = "B"x1500; s/^-+$/$bb/g'Deberías hacerlo.
variante printf+sed:
$ cat file 1111 ---- 2222 $ sed -r 's/^-+$/'"$(printf -- "%.1s" B{1..150})/" file 1111 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 2222 Aquí sed se usa solo para reemplazo.
printf se usa para generar 1500 veces B. (El scriptlet anterior tiene 150 en lugar de 1500, porque requiere demasiado desplazamiento).