Vim y comando de linea¶
rgrep -i cantidad app/| egrep -v "svn|~"| cut -d ":" -f1 | uniq
buscamos recursivamente ("rgrep") sin importar la mayúsculas/minúsculas ("-i") la palabra cantidad ("cantidad") en el directorio app ("app/") y la salida esta enviado a ("|")
una búsqueda de patrón ("egrep") donde eliminamos ("-v") las salidas que contienen o "svn" o "~" ("svn|~") y la salida esta enviado a ("|")
cortar (cut) con el delimitador de campo ":" ("-d ':'") y recogemos solamente el primer campo ("-f1") y la salida esta enviado a ("|")
eliminamos las salidas redundantes ("uniq")
vim $(rgrep -i cantidad app/| egrep -v "svn|~"| cut -d ":" -f1 | uniq | perl -ane 'chomp; print "$F[0] "')
Aquí utilizamos la salida anterior pero queremos que sea en una sola linea, sin los retorno de carro ("chomp") y imprimimos el primer y único campo ("$F0") con un espacio detrás
Esta salida (todos los ficheros bajo el directorio app que contienen la palabra "cantidad" sin importar las mayúsculas o minusculas, todos en una linea separado entre sí por un espacio) la mandamos como parámetros al vim
El vim editará uno detrás de otro los ficheros, cuando grabaremos (":wq") o saldremos sin modificar (":q!"), nos dirá que tenemos otros ficheros que editar, teclearemos el retorno de carro (o cualquier otra tecla) seguido de ":n" (por next) y pasaremos al fichero siguiente
dentro del vim, por ejemplo para cambiar la palabra "cantidad" por la palabra "importe" teclearemos "escape" (para asegurarnos que no estamos en modo de edición) seguido de:
:%s/cantidad/importe/gc
los ":" son para entrar en modo de linea de comando (abajo)
el "%" para indicar que los cambios estén del principio hasta el final del texto (si queríamos de la linea 3 a la linea 8, remplazaríamos "%" por "3,8")
el "s" para decirle que se trata de substituir
entre los 2 primeras barras ("/") ponemos lo que queremos substituir
después de la segunda barra, el texto que queremos poner en lugar del primero termino
y cerramos las barras ("/")
después indicamos que queremos una substitución global ("g") el la linea (sino reemplazaría solamente la primera ocurrencia en la linea y pasaría a la linea siguiente)
y queremos que antes de substituir nos pregunte ("c" de confirmar) si queremos del cambio (tecleamos "y" si queremos del cambio, y "n" si no lo queremos (en cuyo caso, pasaría a la ocurrencia siguiente)