En las siguientes experiencias de lab vamos a utilizar el comando vi para modificar archivos, no para crearlo. Esto porque el modo de edición de texto es lo más utilizado.
Tabla resúmen de features
http://www.yolinux.com/TUTORIALS/LinuxTutorialAdvanced_vi.htmlCaracterísticas más utilizadas de vi
- indentación.- patrones de búsqueda dentro del texto
- substitución de texto.
Algunos tips simples/útiles
mostrar/Ocultar el número de línea
Esta función se ejecuta con los siguientes comandos::set nu
: set nonu
[gcepeda@santorini ~]$ vi /etc/hosts
texto original
127.0.0.1 localhost
127.0.1.1 santorini
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
resultado:
1 127.0.0.1 localhost
2 127.0.1.1 santorini
3
4 # The following lines are desirable for IPv6 capable hosts
5 ::1 ip6-localhost ip6-loopback
6 fe00::0 ip6-localnet
7 ff00::0 ip6-mcastprefix
8 ff02::1 ip6-allnodes
9 ff02::2 ip6-allrouters
patrones de búsqueda dentro del texto
Para utilizar correctamente la función de busqueda/sustitución dentro del archivo de texto, se debe tener presente la siguiente estructra: :[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
Donde:[range]s[ubstitute]
el rango casi siempre toma el valor "%" ya que indica "buscar el patrón en todas las líneas del texto"
/{pattern}
Es el patrón a buscar
/{string}
es lo que se requiere poner en lugar del patrón de búsqueda.
/[flags] [count]
Los flags pueden ser:
[c] Confirm each substitution / solicita confirmación en cada coincidencia.
[g] Replace all occurrences in the line / reemplaza todas las coincidencia encontradas a lo largo del archivo.
[i] Ignore case for the pattern / ignora MAYUS/minus.
Substituir un texto por otro en todo el archivo.
En el siguiente ejemplo, el requerimiento es buscar en todas las líneas del archivo, todas las coincidencias y reemplazarlas.El comando a ejecutar es de la siguiente forma:
:%s/old-text/new-text/g
[root@localhost ~]# vi CHANGELOG.txtLogicalDOC 7.2 (2015-03-20; logicaldoc-7.2)
==============================================================
Resultado:
MAgicalDOC 7.2 (2015-03-20; logicaldoc-7.2)
==============================================================
En el ejemplo anterior, el comando ingresado considera las mayusc/minusc, por lo que no se reemplazó en todas las veces donde se encontró la palabra "logicaldoc".
Si es requerido ignorar las mayusc/minusc, se debe agregar el param "i" en los flags, de la siguiente forma:
[root@localhost ~]# vi CHANGELOG.txt
MAgicalDOC 7.2 (2015-03-20; logicaldoc-7.2)
==============================================================
Resultado
MAgicalDOC 7.2 (2015-03-20; magicaldoc-7.2)
==============================================================
Substituir el texto en la línea actual
se utiliza el parametro de rango sin incluir "%"
[root@localhost ~]# vi CHANGELOG.txt
MAgicalDOC 7.2.1 (2015-05-05; magicaldoc-7.2.1)
==============================================================
resultado
laladoc 7.2 (2015-03-20; laladoc-7.2)
==============================================================
Substituir el texto en determinadas líneas.
Para este caso el rango es expresado indicando la cantidad de línes.:1,10s como ejemplo diciendo para las primeras tres líneas del archivo.
[root@localhost ~]# vi CHANGELOG.txt
MAgicalDOC 7.2.1 (2015-05-05; magicaldoc-7.2.1)
==============================================================
Substituir el texto desde la posición actual a las siguientes líneas.
dentro de los flags, incluir el conteo de líneas siguientes a la línea donde se encuentra ubicado el cursor actualmente,
MAgicalDOC 7.2.1 (2015-05-05; magicaldoc-7.2.1)
==============================================================
Substituir una palabra y no los caracteres que lo contengan.
Cuando se busca por un patrón, es posible que el string de búsqueda se encuentre dentro palabras más grandes. Si lo que se requiere es reemplazar una palabra, y no todas las palabras que contengan un juego de caracteres, se debe encerrar la palabra en "<>"[root@localhost ~]# vi CHANGELOG.txt
MAgicalDOC 7.2.1 (2015-05-05; magicaldoc-7.2.1)
==============================================================
De esta forma, busca sólo la palabra aislada "magicaldoc".
Se debe anteceder al caracter con la tecla de escape \< y \>
Substituir varias palabras por otra.
Se puede buscar por una o varias palabras para ser sustituidas por otra.se debe formatear el patrón de busqueda de la siguiente forma:
(palabra1|palabra2)
Observar el siguiente ejemplo
MAgicalDOC 7.2 (2015-03-20; logicaldoc-7.2)
==============================================================
Resultado:
laladoc 7.4 (2015-11-25; laladoc-7.4)
==============================================================
NOTA: siempre es requerido anteponer el caracter de escale "\" para los siguientes símbolos "<,>,|,(,)"
Omitirlo puede inducir a errores en el patrón de búsqueda.
Substituir todo el texto desde minúscula a Mayúscula y visceversa
Para Reemplazar todo el texto a minusculas, se utiliza el flag "L&" de la siguiente forma:[root@localhost ~]# vi CHANGELOG.txt
MAgicalDOC 7.4 (2015-11-25; logicaldoc-7.4)
==============================================================
590 - Easy the creation of folder - Improvement - User Interface
592 - Correctly handle non-latin chars when sending emails - Bug - Core
606 - Deleting individual files via webdav dont go to trash - Bug - WebDAV
Resultado
magicaldoc 7.4 (2015-11-25; logicaldoc-7.4)
==============================================================
590 - easy the creation of folder - improvement - user interface
592 - correctly handle non-latin chars when sending emails - bug - core
606 - deleting individual files via webdav dont go to trash - bug - webdav
[root@localhost ~]# vi CHANGELOG.txt
magicaldoc 7.4 (2015-11-25; logicaldoc-7.4)
==============================================================
590 - easy the creation of folder - improvement - user interface
592 - correctly handle non-latin chars when sending emails - bug - core
606 - deleting individual files via webdav dont go to trash - bug - webdav
Resultado
MAGICALDOC 7.4 (2015-11-25; LOGICALDOC-7.4)
==============================================================
590 - EASY THE CREATION OF FOLDER - IMPROVEMENT - USER INTERFACE
592 - CORRECTLY HANDLE NON-LATIN CHARS WHEN SENDING EMAILS - BUG - CORE
606 - DELETING INDIVIDUAL FILES VIA WEBDAV DONT GO TO TRASH - BUG - WEBDAV
Para reemplazar sólo la primera letra de cada palabra, se utiliza el flag de la siguiente forma
[root@localhost ~]# vi install.txt
installation procedure:
1) Open a console
2) Type the command: java -jar Magicaldoc-installer.jar
3) Follow the installation steps
Resultado
Installation Procedure:
1) Open A Console
2) Type The Command: Java -Jar Magicaldoc-Installer.Jar
3) Follow The Installation Steps
Fuentes:
http://www.ibm.com/developerworks/aix/library/au-vitips.htmlhttp://www.thegeekstuff.com/2009/04/vi-vim-editor-search-and-replace-examples/
http://www.yolinux.com/TUTORIALS/LinuxTutorialAdvanced_vi.html
http://www.lefred.be/node/75
No hay comentarios:
Publicar un comentario