Este comando es bastante útil para reemplazar cadenas en archivos desde un proceso desatendido, llamese script. Para probar este comando creamos un archivo:
$ echo “tengo un coche azul” > prueba.txt
Ya tenemos el archivo “prueba.txt”, ahora buscaremos y reemplazaremos la cadena “azul” por “rojo”.
$ vi -c “%s/azul/rojo/g|wq” prueba.txt
$cat prueba.txt
tengo un coche rojo
Ya te habrás dado cuenta que la opción “-c” acepta comandos de vi como argumento, en el ejemplo le pasamos dos comandos:
s/azul/rojo/g <- reemplaza todas las ocurrencias de azul por rojo, la “g” no es necesaria a menos que desees que se aplique el comando varias veces en la misma linea.
y
wq <- Guarda los cambios y sale de vi
El separador de comandos es el caracter “|” y puedes ejecutar más comandos si así lo necesitas, por ejemplo:
$ vi -c “%s/azul/rojo/g|%s/coche/barco/g|wq” prueba.txt
Cambiamos las cadenas barco y azul por separado dando como resultado:
$ cat prueba.txt
Tengo un barco rojo
Listo! n.n