LinuxParty
OK, así que lo que quiere es hacer cosas desde la línea de comandos con adecuadas expresiones regulares. Bien es uno de los usos más comunes de las expresiones regulares, el de la línea de comandos utilizando grep. En este ejemplo encontrará todas las sentencias de una línea de perl Shebang (una línea como: #!/usr/bin/perl) en los archivos de trabajo actual, y encontrar así que todos los scripts de Perl:
grep '^#!.*perl' *
(Tenga en cuenta que esto sería encontrar archivos de texto con secuencias de comandos incluidas en ellos, así como los scripts ejecutables.)
- El caracter ^ significa "el comienzo de la línea '($ significa el final de la línea).
- El conjunto .* Significa "cualquier carácter (el período), cualquier número de veces (el *). Para "uno o más de las características anteriores, puede utilizar +.
OK, que lo que quiere hacer en la línea de comandos con adecuada las expresiones regulares? Una de las aplicaciones más comunes de expresiones regulares en la línea de comandos es con grep. Este ejemplo sería encontrar todas las instancias de una línea de perl Shebang (una línea como:
(#!/usr/bin/perl)
En los archivos en el directorio de trabajo actual, y encontrar
así que todos los scripts de Perl:
grep '^#!.*perl' *
o mejor...
grep "^#!.*bash" *
(Tenga en cuenta que esto sería encontrar archivos de texto con secuencias de comandos incluidas en ellos, así como los scripts ejecutables.) El ^ significa "el comienzo de la línea '($ significa el final de la línea). .* Significa "cualquier carácter (el período), cualquier número de veces (el *). Para "uno o más de las características anteriores, puede utilizar +.
He aquí otro ejemplo grep, esta vez para buscar las cosas que se parecen a los números de teléfono de un móvil del Reino Unido (07123 456789) en la carpeta de mi "direcciones" de correo electrónico:
grep -C 10 '07[0-9]\{3\} [0-9]\{6\}' ~/mail/addresses
-C 10
le muestra 10 líneas de contexto para cada resultado, que podría ser útil aquí en el número correspondiente al nombre.
El 07 hace coincidir exactamente para eso. [0-9] especifica cualquier dígito en ese rango ([0123] se especifica cualquiera de los dígitos 0, 1, 2, o 3). Por sí mismo, el rango irá acompañada de una vez.
\{3\}
Significa 'resultado del rango anterior, se mostrará en 3 veces (3 digitos).
[0-9]+ coincidiría con uno o más dígitos. Por último, [0-9]
\{6\}
Significa 'exactamente 6 dígitos.'
(07123 456789)
Otra utilidad en la que Perl puede ser útil en expresiones regulares. Usando Perl como un editor de flujo le da acceso a la instalacón de retrorreferencia de expresiones regulares. Esta línea modifica todos los archivos en el directorio actual, cambiando de cualquier instancia de Juliet a Juliet Kemp:
perl -i.old -pe 's#\b(Juliet)\b#$1 Kemp#g' *
-i.old significa que cualquier archivo modificado se guardará como filename.old antes de que sea cambiado. -pe establece Perl como un editor de flujo (se ejecutan en cada archivo a su vez, y ejecuta el siguiente comando). La expresón regular
\b(Juliet)\b
busca la palabra Juliet ocurriendo con un límite de palabra a cada lado: por lo que sólo recoge Juliet como una palabra, no como parte de una palabra (y por tanto no cambiaría el nombre de mi teórica colega Juliet). El paréntesis almacenan este valor en la variable $1: esto es la retrorreferencia.
La segunda parte de la búsqueda y reemplazo, $1 Kemp se remite a la primera parte de usar la variable $1, y añade mi apellido en el extremo.
El siguiente ejemplo sería útil si usted tiene un directorio en su sitio web que contiene archivos PDF y HTML todos mezclados, y usted acaba de decidir mover los archivos PDF en un directorio independiente. Para actualizar todas las
referencias en todos los archivos en el directorio actual, utilice esta línea:
perl -i.old -pe 's#<a href="/([^/]*\.pdf)">#<a href="/pdfdir/$1">#g' *La parte importante aquí es ([^/]* \.pdf).
El paréntesis de nuevo identifica la parte que almacena $1.
[^/]
Significa "cualquier carácter excepto /: un símbolo de intercalación entre corchetes significa negación.
Esta es la manera que usted sólo el cambiará file.pdf, no OtherDir/file.pdf
http://othersite/dir/file.pdf.
La estrella después significa "cualquier número de caracteres previa a la clase", es decir cualquier número de carácteres excepto /. \.pdf coincide exactamente .pdf:
Aquí, la barra invertida se utiliza para tratar el período como un período real, no con su especial significado de "cualquier caracter"
Usted puede encontrar un resumen de las opciones de expresión regular aquí.
http://linux.about.com/od/lts_guide/a/gdelts66t01.htm
encontrar y localizar
También puede utilizar expresiones regulares con find, con el modificador -regex. Por ejemplo, para encontrar todos los archivos .log en el directorio actual y sus subdirectorios:
find . -regex '.*\.log'
Es importante tener en cuenta que la expresión se ve en la ruta completa de cada archivo, no sólo el nombre de archivo. Así que la expresión regular debe coincidir con /ruta/a/mi/archivo.txt, no sólo filename.txt.
También puede utilizar el parámetro -regexp con locate:
locate --regexp '.*mail$'
encontrará cualquier ruta de archivo que termine en mail. (Tenga en cuenta
que este utiliza -regexp mientras que find utiliza -regex.)
En la segunda parte de esta serie, voy a mostrar a las expresiones regulares
utilizadas en los editores y otros lugares.
Artículo Anterior: Expresiones regulares en Linux, que son y cómo entenderlas
Artículo siguiente: Expresiones Regulares en Linux, Consejos avazandos para buscar y remplazar

-
Juegos
- La última versión del cliente Steam de Valve permite una descarga más rápida de actualizaciones en Linux
- Los juegos para PC superan a las consolas desde hace años, según un informe
- DXVK 2.5.3 trae mejoras para Far Cry 5, Max Payne 3 y otros juegos
- Instalar Steam en Fedora Linux.
- Juego Simulador de Camiones para Linux: Euro Truck Simulator 2
- Cómo instalar Steam en Linux para empezar a jugar miles de juegos
- Valve lanza una actualización del cliente Steam para mejorar aún más los juegos nativos en Linux
- Half-Life 2 celebra su 20º aniversario
- La nueva actualización del cliente Steam añade grabación de juegos y mejora los juegos nativos en Linux
- Este videojuego de estrategia bélica, es tan bueno que hasta el Pentágono lo usa como entrenamiento
- Una fórmula de ajedrez se está apoderando del mundo
- Los 15 mejores juegos de Linux que deberías jugar en 2024
- Los 28 mejores juegos del MS-DOS disponibles online para jugar gratis en tu Navegador.
- Distribuciones de Linux para Juegos: Elevando la Experiencia de Juego en 2023
- Unity se apresura a aclarar el plan de incremento de precios, mientras los desarrolladores de juegos se enfadan