AWK: Diferenzas entre revisións

Contido eliminado Contido engadido
ArthurBot (conversa | contribucións)
Xqbot (conversa | contribucións)
m bot Modificado: ro:AWK; cambios estética
Liña 19:
A implementación dalgunha versión da linguaxe AWK é estándar en case todo [[sistema operativo]] [[tipo unix]] moderno. AWK é mencionado nas [[Single Unix Specification|Single UNIX Specification]] (especificaciones básicas de unix) como unha das utilidades necesarias de todo [[sistema operativo]] [[Unix]]. Pódense instalar implementaciones de AWK en case todos os demais sistemas operativos.
 
== Estrutura dos programas AWK ==
Xeralmente falando, a AWK dánselle dúas pezas de datos: un ficheiro de ordes e un ficheiro primario de entrada. Un ficheiro de ordes (que pode ser un ficheiro real, ou pode ser incluído na invocación de AWK desde a [[liña de ordes]]) contén unha serie de ordes que lle din a AWK como procesar o ficheiro de entrada. O ficheiro primario de entrada é normalmente texto formateado dalgún xeito; pode ser nun ficheiro real, ou pode ser lido por AWK da entrada estándar (teclado). Un programa AWK típico consiste nunha serie de liñas, cada unha da forma
 
Liña 40:
AWK foi creado como unha substitución aos algoritmos escritos en [[Linguaxe de programación C|C]] para métodos de análises de texto.
 
== Comandos de AWK ==
Os comandos de AWK son as declaracións substituídas por ''acción'' nos exemplos anteriores. Os comandos de AWK poden incluír chamadas a funcións, asignación de variables, cálculos, ou calquera combinación destas. AWK contén soporte propio para moitas funcións; moitas outras son provistas polas distintas versións de AWK. Ata algunhas versións soportan a inclusión de librerías dinámicamente enlazadas, que poden prover aínda máis funcións.
 
Por claridade os corchetes ( ''{ }'' ) serán omitidos nos seguintes exemplos.
 
=== O comando ''print'' ===
O comando ''print'' é usado para imprimir texto. A forma máis simple deste comando é
 
Liña 70:
print "expresión" > "nomee de arquivo"
 
=== Variables ===
Os nomes de variables poden usar calquera combinación dos carácteres [A-Za-z0-9_], coa única excepción das palabras crave da linguaxe. Os operadores ''+ - * /'' son suma, resta, multiplicación e división respectivamente. Para a concatenación, basta con colocar dúas variables (ou cadea constante) xunto a calquera outra, opcionalmente cun espazo intermedio. As cadeas son delimitadas por comiñas dobres. Non é necesario finalizar ordénelas con ''punto e coma''. Pódense engadir comentarios do programa usando '' #'' como primeiro carácter nunha liña.
 
=== Funcións definidas polo usuario ===
De xeito similar ao [[Linguaxe de programación C|C]], a definición de funcións consiste na clave <tt>function</tt>, o nome da función, os argumentos da función e o corpo da mesma, e.g.: function:
 
Liña 87:
As funcións poden ter variables definidas localmente. Os nomes destas son engadidos ao final da lista de argumentos, aínda que os valores destas deben ser omitidos ao chamar a función. É conveniente indentar as variables locais na lista de argumentos para indicar onde terminan os parámetros e onde comezan as variables locais.
 
== Exemplos ==
=== Hello World ===
Este é un programa "[[Ola mundo]]" moi simple escrito en AWK:
 
Liña 98:
length > 80
 
=== Contador de palabras ===
Conta as palabras na entrada e mostra a cantidade de liñas, palabras e carácteres.
 
Liña 104:
END { print NR, w, c }
 
=== Total da primeira columna ===
Suma os valores da primeira columna dos datos ingresados.
 
Liña 110:
END { print s }
 
=== Frecuencia de palabras ===
Este programa usa [[Lista (estrutura de datos)|listas enlazadas]] para determinar a cantidade de veces que cada palabra aparece no texto.
 
Liña 123:
}
 
== Programas autocontenidos ==
Como calquera outro linguaxe de programación, pódense escribir programas AWK autocontenidos usando a sintaxe de [[liñas de shebang]].
 
Liña 139:
[[GNU]] awk, ou ''gawk'', é outra implementación libre. Foi escrita antes de que a implementación orixinal fose publicada, e é amplamente utilizada. Case todas as [[distribución linux]] inclúen unha versión actualizada de ''gawk'' e ''gawk'' é recoñecido como a implementación estándar no mundo [[linux]]. A versión 30 de ''GAWK'' foi incluída como ''awk'' na versión 5.0 de [[FreeBSD]]. As versións posteriores de BSD incluíron ''nawk'' para evitar o uso das [[GPL]], unhas licenzas de software libre máis restritivas que as BSD no sentido de que un programa publicado baixo a licenza GPL non pode ser modificado para converterse en propietario.
 
* [http://sourceforge.net/projects/xmlgawk/ ''xgawk'']
Páxina dun proxecto libre baseado en ''gawk''. Este estende as funcionalidades de ''gawk'' para permitirlle o uso de librerías dinámicas.
 
* ''[[mawk]]'' é unha implementación AWK optimizada para a velocidade, escrita por Mike Brennan e baseada nun intérprete [[bytecode]].
 
* Thompson AWK ou [[TAWK]] é un [[compilador]] AWK para [[MS-DOUS|DOUS]] e [[Microsoft Windows|Windows]], previamente vendido por Thompson Automation Software.
 
* [http://sourceforge.net/projects/jawk/ ''Jawk''] é un proxecto que implementa AWK en [[Linguaxe de programación Xava|Xava]]. Engádense extensións para a linguaxe para prover acceso a características de Xava dentro dos programas AWK (e.g., Xava threads, sockets, Collections, etc).
 
== Digresión ==
* O ave, emblema de AWK (a.ou na cuberta do libro ''The AWK Programing Language'' é o [[Alca torda|Alca]]).
 
== Véxase tamén ==
=== Bibliografía ===
* {{Cita libro
| autor=[[Alfred V. Aho]], [[Brian Wilson Kernighan|Brian W. Kernighan]], and [[Peter J. Weinberger]]
| publicación=Addison-Wesley
Liña 165:
| título=Effective awk Programming
}}
* {{Cita libro
| autor=[[Arnold Robbins]]
| edición=Edition 3
| título=GAWK: Effective AWK Programming: A User's Guide for GNU Awk
}}
* {{Cita libro
| título=sede & awk, Second Edition
| autor=[[Dálle Dougherty]], [[Arnold Robbins]]
Liña 178:
| publicación=[[O'Reilly Media]]
}}
=== Ligazóns externas ===
* [http://cm.bell-labs.com/cm/cs/awkbook/index.html awk]
* [http://h1.ripway.com/chube/Manual_Awk/Menus.htm Manual awk en castelán]
* [news:comp.lang.awk comp.lang.awk] is a [[USENET]] [[newsgroup]] dedicated to AWK.
* [http://www.gnu.org/software/gawk/gawk.html GAWK (GNU awk) webpage]
* [http://freshmeat.net/projects/mawk/ ''mawk download site'']
* [http://clio.rice.edu/djgpp/win2k/gwk311b.zip DJGPP port of Gawk 3.11b as a downloadable 768KB zipfile]
* [http://sourceforge.net/projects/xmlgawk/ ''xgawk download site'']
* [http://awka.sourceforge.net/ Awka Open Source, AWK to C Conversion Tool]
* [http://www.tasoft.com/tawk.html TAWK Compiler]
* [http://sourceforge.net/projects/jawk/ Jawk Open Source, an implementation of AWK in Xava with extensions]
* [http://www.gnulamp.com/awk.html gnulamp awk tutorial]
* [http://search.cpan.org/perldoc?Inline::Awk Inline::Awk] módulo [[Perl]] en [[CPAN]] para programar en Awk dentro de Perl {{En}}
 
Liña 218:
[[pl:AWK]]
[[pt:AWK]]
[[ro:AWK (programming language)]]
[[ru:AWK]]
[[sh:AWK]]