[email protected]:~$ echo 'replace A please' | sed 's/^\(.\{8\}\).\(.*\)/\1B\2/'
replace B please
El comando sed anterior reemplaza el 8vo carácter sin importar qué es, por lo tanto, no tiene que especificar qué ch un personaje debe ser reemplazado.
En el código anterior sólo hay que reemplazar
- 8 con la posición del carácter que desea
- B con el carácter de lo que desea reemplazar con!
Así que para su ejemplo específico que se convierte en:
[email protected]:~$ echo '...............' | sed 's/^\(.\{4\}\).\(.*\)/\1A\2/'
....A..........
no hablar de que puede reemplazar A con una cadena, proporcionando la cadena en lugar de B o simplemente borrar A al no proporcionar cualquier cosa que B es (\1\2
)
+1. De hecho sed es la herramienta correcta. En una nota lateral, esta versión particular solo funcionará si la cadena de entrada consiste en '.' – CodeExpress
No, en realidad, el '.' no representa el" punto "del personaje, pero coincide con todos los caracteres. Si quisiera hacer coincidir el punto, escribiría '\ .' – jurgemaister
ja, no me di cuenta de eso cuando escribí eso. ¡Esto es perfecto! – CodeExpress