Herramientas de usuario

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
awk [2023/04/12 14:48] – [Patrones] peronawk [2026/04/21 16:05] (actual) – editor externo 127.0.0.1
Línea 7: Línea 7:
 Una segunda categoría es su uso como **transformador de datos**, convirtiendo datos de la forma producida por un programa en la esperada por otro distinto. Los ejemplos más simples consisten en simplemente seleccionar campos, y tal vez reorganizarlos. Una segunda categoría es su uso como **transformador de datos**, convirtiendo datos de la forma producida por un programa en la esperada por otro distinto. Los ejemplos más simples consisten en simplemente seleccionar campos, y tal vez reorganizarlos.
  
->awk resulta invaluable para el el procesado textual y numérico combinado.+>awk resulta invaluable para el el procesado textual y numérico combinado. Fue creado por Aho, Weinberger y Kerningham en los [[Laboratorios Bell]], de allí su nombre.
  
 +====Uso básico====
 +
 +La operación básica de awk es analizar un conjunto de líneas de **entrada** en orden buscando por //coincidencias// que se han especificado. Para cada patrón, puede especificarse una acción; esta acción será llevada a cabo en cada línea que muestre coincidencias, y se le dará **salida** (mostrándolo en la terminal o redirigiéndola).
 +
 +El comando 
 +<code awk>awk programa [ficheros]</code>
 +ejecuta los comandos de awk de la cadena ''programa'' sobre el conjunto de ''ficheros'' especificados, o bien utilizará la entrada estándar si no se hubiesen espeficado fichero alguno para analizar. La declaración también puede volcarse a un ''fichero_salida'' con el prefijo ''-f'':
 +
 +<code awk>awk -f fichero_salida [ficheros]</code>
  
 ====Estructura de Programa de awk==== ====Estructura de Programa de awk====
Línea 18: Línea 27:
 A su turno, cada línea de //entrada// resulta analizada por awk contra cada //[[#patrones|patrón]]//. En cada uno de los patrones en los que encuentre coincidencia, awk ejecutará la //[[#accion|acción]]// solicitada. Una vez que awk ha finalizado de evaluar todos los patrones solicitados en la línea, cargará la siguiente línea, y comenzará nuevamente el análisis de la misma. A su turno, cada línea de //entrada// resulta analizada por awk contra cada //[[#patrones|patrón]]//. En cada uno de los patrones en los que encuentre coincidencia, awk ejecutará la //[[#accion|acción]]// solicitada. Una vez que awk ha finalizado de evaluar todos los patrones solicitados en la línea, cargará la siguiente línea, y comenzará nuevamente el análisis de la misma.
  
-En cada declaración del programa pueden omitirse tanto el patrón como acción, pero no pueden omitirse ambas. Si un patrón carece de acción, la línea coincidente simplemente se presenta como //salida// (por lo tanto una linea con muchos patrones coincidentes puede resultar impresa varias veces). Si una acción carece de patrones, entonces dicha acción se se realizará para cada línea de entrada. Como en las declaraciones del programa awk tanto los patrones como acciones son opcionales, como forma de distinguir unos de otras se encierra la acción entre llaves ''{}'' para distinguirla.+Como en las declaraciones del programa awk tanto los patrones como acciones son opcionales, como forma de distinguir unos de otras se encierra la acción entre llaves ''{}'' para distinguirla. 
 + 
 +En cada declaración del programa pueden omitirse tanto el patrón como acción, pero no pueden omitirse ambas
 +  * Si la acción carece de patrón, la acción se ejecutará para todas las líneas de entrada. 
 +  * Si un patrón carece de acción, la línea coincidente se devolverá como //salida// (una linea con muchos patrones coincidentes será impresa varias veces).
  
 Naturalmente, las líneas cuyos patrones no resultan en coincidencia, son ignoradas ("filtradas"). Naturalmente, las líneas cuyos patrones no resultan en coincidencia, son ignoradas ("filtradas").
Línea 27: Línea 40:
 patron { acción } # Este es el comentario de la linea. patron { acción } # Este es el comentario de la linea.
 </code> </code>
- 
- 
- 
- 
 ====Registros y Campos==== ====Registros y Campos====
  
Línea 44: Línea 53:
  
 La variable ''FILENAME'' se utiliza para contener el nombre del fichero de entrada actual. La variable ''FILENAME'' se utiliza para contener el nombre del fichero de entrada actual.
-====Uso básico==== 
  
-La operación básica de awk es analizar un conjunto de líneas de **entrada** en orden buscando por //coincidencias// que se han especificado. Para cada patrón, puede especificarse una acción; esta acción será llevada a cabo en cada línea que muestre coincidencias, y se le dará **salida** (mostrándolo en la terminal o redirigiéndola). 
- 
-El comando  
-<code awk>awk programa [ficheros]</code> 
-ejecuta los comandos de awk de la cadena ''programa'' sobre el conjunto de ''ficheros'' especificados, o bien utilizará la entrada estándar si no se hubiesen espeficado fichero alguno para analizar. La declaración también puede volcarse a un ''fichero_salida'' con el prefijo ''-f'': 
- 
-<code awk>awk -f fichero_salida [ficheros]</code> 
  
 =====Patrones===== =====Patrones=====
Línea 166: Línea 167:
  
 ====Expresiones Relacionales de awk ==== ====Expresiones Relacionales de awk ====
-Los patrones de awk pueden ser expresiones relacionales que incluyan los operadores relacionales convencionales ''<'', ''<='', ''=='', ''!='', ''>='', y ''>''. Un ejemplo es ''$2 > $1 + 100'' que seleccionará las líneas donde el segundo campo es al menos un ''100'' mayor que el primer campo. De forma similar,+Los patrones de awk pueden ser expresiones relacionales que incluyan los [[operadores en unix#operadores relacionales|operadores relacionales convencionales]] ''<'', ''<='', ''=='', ''!='', ''>='', y ''>''. Un ejemplo es ''$2 > $1 + 100'' que seleccionará las líneas donde el segundo campo es al menos un ''100'' mayor que el primer campo. De forma similar,
  
 <code awk>NF % 2 == 0</code> <code awk>NF % 2 == 0</code>
Línea 184: Línea 185:
  
 ====Patrones Combinacionales==== ====Patrones Combinacionales====
-Un patrón puede ser cualquier patrones combinacinoal booleanos OR ''||'', AND ''&&'', y NOT ''!''+Un patrón puede ser cualquier operador [[operadores en unix#operadores lógicos|combinacinoal de lógica booleana]] OR ''||'', AND ''&&'', y NOT ''!''
  
 Por ejemplo, este programa de awk selecciona las líneas donde un primer campo comienza con ''p'', pero no sea ''perez''. El ''&&'' y el ''||'' garantizan que sus operandos sean evaluados de izquierda a derecha; la evaluación se detendrá tan pronto como se verifique verdad o falsedad. Por ejemplo, este programa de awk selecciona las líneas donde un primer campo comienza con ''p'', pero no sea ''perez''. El ''&&'' y el ''||'' garantizan que sus operandos sean evaluados de izquierda a derecha; la evaluación se detendrá tan pronto como se verifique verdad o falsedad.

Este sitio web utiliza cookies para guardar datos esenciales de su actividad, como su autenticación. Al entrar acepta el uso de cookies.

Más información