Nome
gawk - padrão de digitalização e processamento de linguagem
Sinopse
gawk Opções de estilo POSIX ou GNU -f arquivo de programa -- Arquivo …gawk Opções de estilo POSIX ou GNU -- texto do programa Arquivo … pgawk Opções de estilo POSIX ou GNU -f arquivo de programa -- Arquivo …pgawk Opções de estilo POSIX ou GNU -- texto do programa Arquivo … Gawk é a implementação do Projeto GNU da linguagem de programação AWK. Ele está em conformidade com a definição do idioma no Padrão de Linguagem de Comando e Utilitários POSIX 1003.2. Esta versão, por sua vez, é baseada na descrição A linguagem de programação AWK , por Aho, Kernighan e Weinberger, com os recursos adicionais encontrados na versão do System V Release 4 do UNIX awk . Gawk também fornece laboratórios Bell mais recentes awk extensões, e um número de extensões específicas do GNU. Pgk é a versão de perfil do gawk . É idêntico em todos os sentidos gawk , exceto que os programas são executados mais lentamente e produz automaticamente um perfil de execução no arquivo awkprof.out quando terminar. Veja o --perfil opção abaixo. A linha de comando consiste em opções para gawk em si, o texto do programa AWK (se não for fornecido pelo -f ou --Arquivo opções) e os valores a serem disponibilizados no ARGC e ARGV variáveis AWK pré-definidas. Gawk as opções podem ser opções tradicionais de uma letra POSIX, ou opções longas de estilo GNU. As opções POSIX começam com um único `` - '', enquanto as opções longas começam com `` - ''. Opções longas são fornecidas para recursos específicos do GNU e para recursos obrigatórios do POSIX. Seguindo o padrão POSIX, gawk opções específicas são fornecidas via argumentos ao -W opção. Múltiplo -W opções podem ser fornecidas -W opção tem uma opção longa correspondente, conforme detalhado abaixo. Argumentos para opções longas são associados à opção por um = sinal, sem espaços intermediários, ou eles podem ser fornecidos no próximo argumento de linha de comando. Opções longas podem ser abreviadas, desde que a abreviação permaneça única. Gawk aceita as seguintes opções, listadas em ordem alfabética. -F fs - separador de campo fs Usar fs para o separador de campo de entrada (o valor do FS variável predefinida). -v var = val --atribuir var = val Atribuir o valor val para a variável var , antes da execução do programa começar. Esses valores variáveis estão disponíveis para o INÍCIO bloco de um programa AWK. -f arquivo de programa --Arquivo arquivo de programa Leia a fonte do programa AWK do arquivo arquivo de programa , em vez do primeiro argumento de linha de comando. Múltiplo -f (ou --Arquivo) opções podem ser usadas. -mf NNN -Sr NNN Defina vários limites de memória para o valor NNN . o f flag define o número máximo de campos, e o r flag define o tamanho máximo do registro. Essas duas bandeiras e -m opção são da versão de pesquisa do Bell Laboratories do UNIX awk . Eles são ignorados por gawk , Desde a gawk não tem limites pré-definidos. -W compat -W tradicional --patpat --tradicional Correr em compatibilidade modo. No modo de compatibilidade, gawk se comporta de forma idêntica ao UNIX awk ; Nenhuma das extensões específicas do GNU é reconhecida. O uso de --tradicional é preferível às outras formas dessa opção. Vejo EXTENSÕES GNU, abaixo, para mais informações. -W copyleft -W copyright --copyleft --direito autoral Imprima a versão curta da mensagem de informação de copyright da GNU na saída padrão e saia com sucesso. -W dump-variables= Arquivo --dump-variables= Arquivo Imprima uma lista ordenada de variáveis globais, seus tipos e valores finais para Arquivo . Se não Arquivo é fornecido, gawk usa um arquivo chamado awkvars.out no diretório atual. Ter uma lista de todas as variáveis globais é uma boa maneira de procurar erros tipográficos em seus programas. Você também usaria essa opção se tiver um programa grande com muitas funções e quiser ter certeza de que suas funções não usam inadvertidamente variáveis globais que você queria que fossem locais. (Este é um erro particularmente fácil de fazer com nomes simples de variáveis como Eu, j, e assim por diante.) -W ajuda Uso de -W --Socorro --uso Imprima um resumo relativamente curto das opções disponíveis na saída padrão. (Pelo Padrões de Codificação GNU , essas opções causam uma saída imediata e bem-sucedida. -W lint= fatal --lint= fatal Fornecer avisos sobre construções duvidosas ou não portáveis para outras implementações do AWW. Com um argumento opcional de fatal, avisos de fiapos se tornam erros fatais. Isso pode ser drástico, mas seu uso certamente incentivará o desenvolvimento de programas AWK mais limpos. -W velho - velha Fornecer avisos sobre construções que não são portáveis para a versão original do Unix awk . -W gen-po --gen-po Escaneia e analisa o programa AWK e gera um GNU .po arquivo de formato na saída padrão com entradas para todas as seqüências localizáveis no programa. O programa em si não é executado. Veja o GNU gettext distribuição para mais informações sobre .po arquivos. -W dados não-decimais - dados não decimais Reconhecer valores octais e hexadecimais nos dados de entrada. Use esta opção com muita cautela! -W posix --posix Isso liga compatibilidade mode, com as seguintes restrições adicionais: * x seqüências de escape não são reconhecidas. * Somente espaço e tabulação atuam como separadores de campo quando FS está definido para um único espaço, a nova linha não. * Você não pode continuar linhas depois ? e :. * O sinônimo func para a palavra-chave função não é reconhecido. * Os operadores ** e **= não pode ser usado no lugar de ^ e ^=. * o fflush () função não está disponível. Perfil -W= prof_file --perfil= prof_file Enviar dados de criação de perfil para prof_file . O padrão é awkprof.out. Quando correr com gawk , o perfil é apenas uma versão "bem impressa" do programa. Quando correr com pgawk , o perfil contém contagens de execução de cada instrução no programa na margem esquerda e contagem de chamadas de função para cada função definida pelo usuário. -W reintervalo --re-interval Habilite o uso de expressões de intervalo na correspondência de expressão regular (consulte Expressões regulares, abaixo). Expressões de intervalo não estavam tradicionalmente disponíveis na linguagem AWK. O padrão POSIX adicionou-os, para fazer awk e egrep consistentes uns com os outros. No entanto, o seu uso é susceptível de quebrar antigos programas AWK, então gawk só os fornece se forem solicitados com esta opção, ou quando --posix é especificado. Fonte -W texto do programa --fonte texto do programa Usar texto do programa como código-fonte do programa AWK. Esta opção permite a fácil mistura de funções da biblioteca (usada através do -f e --Arquivo opções) com o código fonte inserido na linha de comando. Ele é destinado principalmente para programas AWK médios a grandes usados em scripts de shell. Versão -W --versão Imprima informações de versão para esta cópia específica de gawk na saída padrão. Isso é útil principalmente para saber se a cópia atual gawk em seu sistema está atualizado em relação ao que a Free Software Foundation está distribuindo. Isso também é útil ao relatar bugs. (Pelo Padrões de Codificação GNU , essas opções causam uma saída imediata e bem-sucedida. -- Sinalize o fim das opções. Isto é útil para permitir que outros argumentos para o próprio programa AWK iniciem com um `- - ''. Isso é principalmente para consistência com a convenção de análise de argumentos usada pela maioria dos outros programas POSIX. No modo de compatibilidade, quaisquer outras opções são marcadas como inválidas, mas são ignoradas. Em operação normal, desde que o texto do programa tenha sido fornecido, opções desconhecidas são passadas para o programa AWK no ARGV matriz para processamento. Isto é particularmente útil para executar programas AWK através do mecanismo interpretador executável `` #! ''. EXECUÇÃO DO PROGRAMA AWK Um programa AWK consiste em uma sequência de instruções de ação padrão e definições de função opcionais. padronizar { declarações de ação }função nome ( lista de parâmetros ) { afirmações }
Gawk primeiro lê a fonte do programa a partir do arquivo de programa (s) se especificado, de argumentos para --fonte, ou do primeiro argumento não-opcional na linha de comando. o -f e --fonte opções podem ser usadas várias vezes na linha de comando. Gawk lê o texto do programa como se todo o arquivo de programa s e os textos de origem da linha de comando foram concatenados juntos. Isso é útil para construir bibliotecas de funções do AWK, sem precisar incluí-las em cada novo programa do AWK que as utiliza. Ele também fornece a capacidade de misturar funções de biblioteca com programas de linha de comando. A variável de ambiente AWKPATH especifica um caminho de pesquisa a ser usado ao localizar arquivos de origem nomeados com o -f opção. Se esta variável não existir, o caminho padrão é".: / usr / local / share / awk". (O diretório atual pode variar, dependendo de como gawk foi construído e instalado.) Se um nome de arquivo fornecido ao -f opção contém um caractere `` / '', nenhuma busca de caminho é executada. Gawk Executa programas AWK na seguinte ordem. Primeiro, todas as atribuições de variáveis especificadas através do -v opção são executadas. Próximo, gawk compila o programa em um formulário interno. Então, gawk executa o código no INÍCIO bloco (s) (se houver) e, em seguida, passa a ler cada arquivo nomeado no ARGV array. Se não houver arquivos nomeados na linha de comando, gawk lê a entrada padrão. Se um nome de arquivo na linha de comando tiver o formulário var = val é tratado como uma atribuição variável. A variável var será atribuído o valor val . (Isso acontece depois de qualquer INÍCIO bloco (s) foram executados.) Atribuição de variável de linha de comando é mais útil para dinamicamente atribuir valores às variáveis que o AWK usa para controlar como a entrada é dividida em campos e registros. Também é útil para controlar o estado se várias passagens forem necessárias em um único arquivo de dados. Se o valor de um determinado elemento de ARGV está vazia (''), gawk pula sobre ele. Para cada registro na entrada, gawk testes para ver se corresponde a qualquer padronizar no programa AWK. Para cada padrão que o registro corresponde, o padrão associado açao É executado. Os padrões são testados na ordem em que ocorrem no programa. Finalmente, depois que toda a entrada está esgotada, gawk executa o código no FIM bloco (s) (se houver). As variáveis do AWK são dinâmicas; eles surgem quando são usados pela primeira vez. Seus valores são números de ponto flutuante ou seqüências de caracteres, ou ambos, dependendo de como eles são usados. O AWK também possui matrizes unidimensionais; matrizes com múltiplas dimensões podem ser simuladas. Várias variáveis pré-definidas são definidas como um programa é executado; estes serão descritos conforme necessário e resumidos abaixo. Normalmente, os registros são separados por caracteres de nova linha. Você pode controlar como os registros são separados, atribuindo valores à variável incorporada RS. E se RS é qualquer caractere único, esse caractere separa os registros. De outra forma, RS é uma expressão regular. O texto na entrada que corresponde a essa expressão regular separa o registro. No entanto, no modo de compatibilidade, somente o primeiro caractere de seu valor de sequência é usado para separar registros. E se RS está definido para a cadeia nula, em seguida, os registros são separados por linhas em branco. Quando RS é definido para a string nula, o caractere de nova linha sempre age como um separador de campo, além de qualquer valor FS pode ter. Como cada registro de entrada é lido, gawk divide o registro em Campos , usando o valor do FS variável como o separador de campo. E se FS é um caractere único, os campos são separados por esse caractere. E se FS é a string nula, então cada caractere individual se torna um campo separado. De outra forma, FS Espera-se que seja uma expressão regular completa. No caso especial que FS é um espaço único, os campos são separados por trechos de espaços e / ou tabulações e / ou novas linhas. (Mas veja a discussão sobre --posix, abaixo). NOTA: O valor de IGNORAR CASO (veja abaixo) também afeta como os campos são divididos quando FS é uma expressão regular e como os registros são separados quando RS é uma expressão regular. Se o CAMPOS DE CAMPO variável é definida como uma lista de números separada por espaços, espera-se que cada campo tenha largura fixa e gawk divide o registro usando as larguras especificadas. O valor de FS é ignorado. Atribuindo um novo valor para FS substitui o uso de CAMPOS DE CAMPOe restaura o comportamento padrão. Cada campo no registro de entrada pode ser referenciado por sua posição, $1, $2, e assim por diante. $0 é o registro inteiro. Campos não precisam ser referenciados por constantes: n = 5imprima $ n imprime o quinto campo no registro de entrada. A variável NF é definido para o número total de campos no registro de entrada. Referências a campos inexistentes (ou seja, campos após $ NF) produz a string nula. No entanto, atribuir a um campo inexistente (por exemplo, $ (NF + 2) = 5) aumenta o valor de NF, cria quaisquer campos intervenientes com a cadeia nula como seu valor e faz com que o valor de $0 ser recalculado, com os campos sendo separados pelo valor de OFS. Referências a campos numerados negativos causam um erro fatal. Decrementando NF faz com que os valores dos campos após o novo valor sejam perdidos e o valor de $0 ser recalculado, com os campos sendo separados pelo valor de OFS. Atribuir um valor a um campo existente faz com que todo o registro seja recriado $0 é referenciado. Da mesma forma, atribuir um valor a $0 faz com que o registro seja resplit, criando novos valores para os campos. Gawk As variáveis internas são: ARGC O número de argumentos da linha de comandos (não inclui opções para gawk ou a fonte do programa). ARGIND O índice em ARGV do arquivo atual sendo processado. ARGV Matriz de argumentos da linha de comando. A matriz é indexada de 0 a ARGC - 1. Alterar dinamicamente o conteúdo de ARGV pode controlar os arquivos usados para dados. BINMODE Em sistemas não POSIX, especifica o uso do modo "binário" para todos os arquivos de E / S. Valores numéricos de 1, 2 ou 3 especificam que arquivos de entrada, arquivos de saída ou todos os arquivos, respectivamente, devem usar E / S binárias. Valores de string de "r"ou "W" especifique que arquivos de entrada ou arquivos de saída, respectivamente, devem usar E / S binárias. Valores de string de "rw" ou "wr" especifique que todos os arquivos devem usar E / S binárias. Qualquer outro valor de string é tratado como "rw", mas gera uma mensagem de aviso. CONVFMT O formato de conversão para números, "% .6g", por padrão. AMBIENTE Uma matriz contendo os valores do ambiente atual. A matriz é indexada pelas variáveis de ambiente, sendo cada elemento o valor dessa variável (por exemplo,ENVIRON "HOME" pode ser / home / arnold). A alteração desta matriz não afeta o ambiente visto pelos programas que gawk desova via redirecionamento ou o sistema()função. ERRNO Se ocorrer um erro no sistema ao fazer um redirecionamento para Obter linha, durante uma leitura para Obter linhaou durante uma perto(), então ERRNO conterá uma string descrevendo o erro. O valor está sujeito a tradução em idiomas diferentes do inglês. CAMPOS DE CAMPO Uma lista separada por espaços em branco de larguras de campo. Quando definido, gawk analisa a entrada em campos de largura fixa, em vez de usar o valor da FS variável como o separador de campo. NOME DO ARQUIVO O nome do arquivo de entrada atual.Se nenhum arquivo for especificado na linha de comando, o valor de NOME DO ARQUIVO é `` - ''. Contudo, NOME DO ARQUIVO é indefinido dentro do INÍCIO bloco (a menos que definido por Obter linha). FNR O número do registro de entrada no arquivo de entrada atual. FS O separador de campo de entrada, um espaço por padrão. Vejo Campos, acima. IGNORAR CASO Controla a diferenciação de maiúsculas e minúsculas de todas as operações de expressões regulares e cadeias de caracteres. E se IGNORAR CASO tem um valor diferente de zero, em seguida, comparações de strings e correspondência de padrões em regras, divisão de campo com FS, registro de separação com RS, expressão regular combinando com ~e !~, e as gensub (), gsub (), índice(), partida(), Dividido()e sub() Todas as funções internas ignoram maiúsculas e minúsculas ao executar operações de expressões regulares. NOTA: A submissão de matrizes é não afetado, nem o um tipo() função. Assim, se IGNORAR CASO não é igual a zero, / aB / corresponde a todas as cordas "ab", "aB","Ab"e "AB". Como com todas as variáveis AWK, o valor inicial de IGNORAR CASO é zero, portanto, todas as operações de expressões regulares e cadeias de caracteres são normalmente sensíveis a maiúsculas e minúsculas. No Unix, o conjunto de caracteres ISO 8859-1 Latin-1 completo é usado ao ignorar maiúsculas e minúsculas. LINT Fornece controle dinâmico do --lint opção de dentro de um programa AWK. Quando verdadeiro, gawk imprime avisos de fiapos. Quando falso, isso não acontece. Quando atribuído o valor da string "fatal", avisos de fiapos se tornam erros fatais, exatamente como --lint = fatal. Qualquer outro valor verdadeiro apenas imprime avisos. NF O número de campos no registro de entrada atual. NR O número total de registros de entrada vistos até o momento. OFMT O formato de saída para números, "% .6g", por padrão. OFS O separador do campo de saída, um espaço por padrão. ORS O separador de registro de saída, por padrão, uma nova linha. PROCINFO Os elementos dessa matriz fornecem acesso a informações sobre o programa AWK em execução. Em alguns sistemas, pode haver elementos na matriz, "grupo 1" através "grupo n ' para alguns n , que é o número de grupos suplementares que o processo possui. Use o em operador para testar esses elementos. Os seguintes elementos têm a garantia de estar disponíveis: PROCINFO "egid" o valor do getegid (2) chamada do sistema. PROCINFO "euid" o valor do geteuid (2) chamada do sistema. PROCINFO "FS" "FS" se a divisão de campo com FS está em vigor, ou "FIELDWIDTHS" se a divisão de campo com CAMPOS DE CAMPO está em vigor. PROCINFO "gid" o valor do getgid (2) chamada do sistema. PROCINFO "pgrpid" o ID do grupo de processos do processo atual. PROCINFO "pid" o ID do processo do processo atual. PROCINFO "ppid" o ID do processo pai do processo atual. PROCINFO "uid" o valor do getuid (2) chamada do sistema. RS O separador de registro de entrada, por padrão, uma nova linha. RT O terminador de registro. Gawk Conjuntos RT para o texto de entrada que correspondeu ao caractere ou expressão regular especificado por RS. RSTART O índice do primeiro caractere correspondido por partida(); 0 se não houver correspondência. (Isso implica que os índices de caractere começam em um.) RENÇO O comprimento da string correspondido por partida(); -1 se não houver correspondência. SUBSEP O caractere usado para separar vários subscritos nos elementos da matriz, por padrão ' 034'. TEXTDOMAIN O domínio de texto do programa AWK; usado para encontrar as traduções localizadas para as strings do programa. Arrays são subscritos com uma expressão entre colchetes ( e ). Se a expressão é uma lista de expressões ( expr , expr …) então o subscrito da matriz é uma string que consiste na concatenação do valor (string) de cada expressão, separado pelo valor da SUBSEP variável. Este recurso é usado para simular matrizes de dimensões múltiplas. Por exemplo: i = "A"; j = "B"; k = "C"x i, j, k = "olá, mundo n" atribui a string "olá, mundo n" para o elemento da matriz x que é indexado pela string"A 034B 034C". Todos os arrays no AWK são associativos, isto é, indexados por valores de string. O operador especial em pode ser usado em um E se ou enquanto declaração para ver se uma matriz tem um índice que consiste em um valor particular. if (val na matriz) matriz de impressão val Se a matriz tiver vários subscritos, use (i, j) no array. o em construção também pode ser usada em para loop para iterar sobre todos os elementos de uma matriz. Um elemento pode ser excluído de um array usando o excluir declaração. o excluir A instrução também pode ser usada para excluir todo o conteúdo de uma matriz, apenas especificando o nome da matriz sem um índice. Variáveis e campos podem ser números (ponto flutuante) ou strings, ou ambos. Como o valor de uma variável é interpretado depende de seu contexto. Se usado em uma expressão numérica, ele será tratado como um número, se usado como uma string, será tratado como uma string. Para forçar uma variável a ser tratada como um número, adicione 0 a ela; para forçá-lo a ser tratado como uma string, concatene-o com a string nula. Quando uma string deve ser convertida em um número, a conversão é realizada usando strtod (3). Um número é convertido em uma string usando o valor de CONVFMT como uma string de formato para sprintf (3), com o valor numérico da variável como argumento. No entanto, mesmo que todos os números no AWK sejam de ponto flutuante, os valores integrais são sempre convertido como inteiros. Assim, dado CONVFMT = "% 2.2f" a = 12 b = a "" a variável b tem um valor de string de '12' e não '12.00'. Gawk executa comparações da seguinte maneira: Se duas variáveis são numéricas, elas são comparadas numericamente. Se um valor é numérico e o outro tem um valor de string que é uma "string numérica", as comparações também são feitas numericamente. Caso contrário, o valor numérico é convertido em uma cadeia de caracteres e uma comparação de cadeia é executada. Duas cordas são comparadas, é claro, como cordas. Note que o padrão POSIX aplica o conceito de `` numeric string '' em todos os lugares, até mesmo para constantes de strings. No entanto, isso é claramente incorreto e gawk não faz isso. (Felizmente, isso é corrigido na próxima versão do padrão.) Observe que constantes de string, como '57', está não strings numéricas, elas são constantes de string. A ideia de `` string numérica '' só se aplica a campos, Obter linha entrada, NOME DO ARQUIVO, ARGV elementos AMBIENTE elementos e os elementos de um array criado por Dividido() que são seqüências numéricas. A ideia básica é que entrada do usuário e apenas a entrada do usuário, que parece numérica, deve ser tratada dessa maneira. As variáveis não inicializadas têm o valor numérico 0 e o valor da cadeia "" (a cadeia nula ou vazia). Começando com a versão 3.1 do gawk você pode usar constantes octais e hexadecimais no estilo C em seu código-fonte do programa AWK. Por exemplo, o valor octal 011 é igual a decimal 9e o valor hexadecimal 0x11 é igual a decimal 17. Constantes de cadeia no AWK são sequências de caracteres entre aspas duplas ('). Dentro de cordas, certas seqüências de escape são reconhecidos, como em C. Estes são: \ Uma barra invertida literal. uma O caractere `` alerta ''; geralmente o caractere ASCII BEL. b backspace. f feed de formulário. n nova linha. r retorno de carro. t guia horizontal. v guia vertical. x dígitos hexadecimais O caractere representado pela seqüência de dígitos hexadecimais após a x. Como na ANSIC, todos os dígitos hexadecimais a seguir são considerados parte da seqüência de escape. (Esse recurso deve nos dizer algo sobre o design de linguagem por comitê.) Por exemplo, " x1B" é o caractere ASCIIESC (escape). ddd O caractere representado pela seqüência de dígitos octal de 1, 2 ou 3 dígitos. Por exemplo., ' 033' é o caractere ASCII ESC (escape). c O caracter literal c . As seqüências de escape também podem ser usadas dentro de expressões regulares constantes (por exemplo,/ t f n r v / corresponde a caracteres de espaço em branco). No modo de compatibilidade, os caracteres representados por sequências de escape octal e hexadecimal são tratados literalmente quando usados em constantes de expressão regulares. Portanto, / a 52b / é equivalente a/ a * b /. O AWK é uma linguagem orientada por linhas. O padrão vem primeiro e depois a ação. As declarações de ação são incluídas { e }. Ou o padrão pode estar faltando, ou a ação pode estar faltando, mas, claro, não ambos. Se o padrão estiver faltando, a ação é executada para cada registro de entrada. Uma ação ausente é equivalente a { impressão } que imprime o registro inteiro. Os comentários começam com o caractere "#" e continuam até o final da linha. Linhas em branco podem ser usadas para separar instruções. Normalmente, uma instrução termina com uma nova linha, no entanto, este não é o caso das linhas que terminam em ``, '', {, ?, :, &&ou ||. Linhas que terminam em Faz ou outro também têm suas declarações automaticamente continuadas na linha seguinte. Em outros casos, uma linha pode ser continuada terminando com um ', caso em que a nova linha será ignorada. Múltiplas declarações podem ser colocadas em uma linha, separando-as com um ``; ''. Isso se aplica tanto às instruções na parte de ação de um par de ação padrão (o caso usual) quanto às próprias instruções de ação de padrão. Padrões AWK podem ser um dos seguintes: INÍCIO FIM / expressão regular / expressão relacional padronizar && padronizar padronizar || padronizar padronizar ? padronizar : padronizar ( padronizar ) ! padronizar pattern1 , pattern2 INÍCIO e FIM são dois tipos especiais de padrões que não são testados em relação à entrada. As partes de ação de todos INÍCIO padrões são mesclados como se todas as declarações tivessem sido escritas em um único INÍCIO quadra. Eles são executados antes de qualquer entrada ser lida. Da mesma forma, todo o FIM blocos são mesclados e executados quando toda a entrada está esgotada (ou quando Saída instrução é executada). INÍCIO e FIM padrões não podem ser combinados com outros padrões em expressões padrão. INÍCIO e FIM padrões não podem ter peças de ação ausentes. Para / expressão regular / padrões, a instrução associada é executada para cada registro de entrada que corresponde à expressão regular. Expressões regulares são as mesmas que as egrep (1) e estão resumidos abaixo. UMA expressão relacional pode usar qualquer um dos operadores definidos abaixo na seção sobre ações. Geralmente, eles testam se determinados campos correspondem a determinadas expressões regulares. o &&, ||e ! os operadores são lógicos AND, OR lógicos e lógicos NOT, respectivamente, como em C. Eles fazem avaliação de curto-circuito, também como em C, e são usados para combinar expressões de padrão mais primitivas. Como na maioria dos idiomas, parênteses podem ser usados para alterar a ordem de avaliação. o ?: O operador é como o mesmo operador em C. Se o primeiro padrão for verdadeiro, o padrão usado para teste é o segundo padrão, caso contrário, é o terceiro. Apenas um dos segundo e terceiro padrões é avaliado. o pattern1 , pattern2 forma de uma expressão é chamado de padrão de alcance . Ele corresponde a todos os registros de entrada, começando com um registro que corresponda pattern1 e continuar até um registro que corresponda pattern2 inclusive. Não combina com nenhum outro tipo de expressão padrão. Expressões regulares são o tipo estendido encontrado em egrep . Eles são compostos de caracteres da seguinte forma: c corresponde ao não-metacaractere c . c corresponde ao caractere literal c . . corresponde a qualquer caractere Incluindo nova linha. ^ corresponde ao início de uma string. $ corresponde ao final de uma string. abc… lista de caracteres, corresponde a qualquer um dos personagens abc… . ^ abc… lista de caracteres negados, corresponde a qualquer caractere, exceto abc… . r1 | r2 alternação: combina r1 ou r2 . r1r2 concatenação: correspondências r1 , e depois r2 . r + corresponde a um ou mais r . r * corresponde a zero ou mais r . r ? corresponde a zero ou um r . ( r ) agrupamento: correspondências r . r { n } r { n ,} r { n , m } Um ou dois números dentro de chaves denotam expressão de intervalo . Se houver um número nas chaves, a expressão regular anterior r é repetido n vezes. Se houver dois números separados por uma vírgula, r é repetido n para m vezes. Se houver um número seguido por uma vírgula, r é repetido pelo menos n vezes. Expressões de intervalo só estão disponíveis se --posix ou --re-interval é especificado na linha de comando. y corresponde à string vazia no início ou no final de uma palavra. B corresponde à string vazia dentro de uma palavra. < corresponde à string vazia no início de uma palavra. > corresponde à string vazia no final de uma palavra. W corresponde a qualquer caractere constituinte da palavra (letra, dígito ou sublinhado). W corresponde a qualquer caractere que não seja constituinte de palavras. ` corresponde à string vazia no início de um buffer (string). ' corresponde à string vazia no final de um buffer. As seqüências de escape que são válidas em constantes de string (veja abaixo) também são válidas em expressões regulares. Classes de personagens são um novo recurso introduzido no padrão POSIX. Uma classe de caractere é uma notação especial para descrever listas de caracteres que possuem um atributo específico, mas onde os próprios caracteres reais podem variar de país para país e / ou de conjunto de caracteres para conjunto de caracteres. Por exemplo, a noção do que é um caractere alfabético difere nos EUA e na França. Uma classe de caractere é válida apenas em uma expressão regular dentro os parênteses de uma lista de caracteres. Classes de personagens consistem em :, uma palavra-chave que denota a classe e :. As classes de caracteres definidas pelo padrão POSIX são: : alnum: Caracteres alfanuméricos. :alfa: Caracteres alfabéticos. :em branco: Espaço ou caracteres de tabulação. : cntrl: Caracteres de controle. : digit: Caracteres numéricos. :gráfico: Caracteres que são imprimíveis e visíveis. (Um espaço é imprimível, mas não visível, enquanto uma são ambos.) :mais baixo: Caracteres alfabéticos minúsculos. :impressão: Caracteres imprimíveis (caracteres que não são caracteres de controle). : pontuar: Caracteres de pontuação (caracteres que não são letra, dígitos, caracteres de controle ou caracteres de espaço). :espaço: Caracteres de espaço (como espaço, tabulação, e formfeed, para citar alguns). :superior: Caracteres alfabéticos maiúsculos. : xdigit: Caracteres que são dígitos hexadecimais. Por exemplo, antes do padrão POSIX, para combinar caracteres alfanuméricos, você teria que escrever / A-Za-z0-9 /. Se o seu conjunto de caracteres tivesse outros caracteres alfabéticos, isso não corresponderia a eles e, se seu conjunto de caracteres fosse classificado de maneira diferente do ASCII, isso poderia nem corresponder aos caracteres alfanuméricos do ASCII. Com as classes de caracteres POSIX, você pode escrever/ alnum: /e isso corresponde aos caracteres alfabéticos e numéricos em seu conjunto de caracteres. Duas sequências especiais adicionais podem aparecer nas listas de caracteres. Estes se aplicam a conjuntos de caracteres não-ASCII, que podem ter símbolos únicos elementos de agrupamento ) que são representados com mais de um caractere, bem como vários caracteres que são equivalentes para agrupamento ou para fins de classificação. (Por exemplo, em francês, um simples "e" e um e-acentuado grave são equivalentes). Símbolos de agrupamento Um símbolo de intercalação é um elemento de classificação de vários caracteres entre . e .. Por exemplo, se CH é um elemento de agrupamento, então .CH. é uma expressão regular que corresponde a esse elemento de classificação, enquanto CH é uma expressão regular que corresponde a c ou h. Classes de Equivalência Uma classe de equivalência é um nome específico de localidade para uma lista de caracteres equivalentes. O nome é incluído em = e =. Por exemplo, o nome e pode ser usado para representar todos os "e", "e" e "e". = e = é uma expressão regular que corresponde a qualquer e, e 'ou e`. Esses recursos são muito valiosos em locais que não falam inglês. A biblioteca funciona gawk usos para correspondência de expressões regulares atualmente reconhecem somente classes de caracteres POSIX; eles não reconhecem símbolos de agrupamento ou classes de equivalência. o y, B, <, >, W, W, `e ' operadores são específicos para gawk ; eles são extensões baseadas em facilidades nas bibliotecas de expressão regular GNU. As várias opções de linha de comando controlam como gawk interpreta caracteres em expressões regulares. Sem opções No caso padrão, gawk fornecer todas as facilidades de expressões regulares POSIX e os operadores de expressão regular GNU descritos acima. No entanto, as expressões de intervalo não são suportadas. --posix Apenas expressões regulares POSIX são suportadas, os operadores GNU não são especiais. (Por exemplo.,W corresponde a um literal W). Expressões de intervalo são permitidas. --tradicional Unix tradicional awk expressões regulares são correspondidas. Os operadores GNU não são especiais, as expressões de intervalo não estão disponíveis e nem as classes de caracteres POSIX (: alnum: e assim por diante). Caracteres descritos por seqüências de escape octal e hexadecimal são tratados literalmente, mesmo que eles representem metacaracteres de expressão regular. --re-interval Permitir expressões de intervalo em expressões regulares, mesmo se --tradicional Tem sido fornecido. Declarações de ação são colocadas entre chaves, { e }. As declarações de ação consistem nas instruções de atribuição, condicional e loop usuais encontradas na maioria dos idiomas. Os operadores, as instruções de controle e as instruções de entrada / saída disponíveis são padronizadas depois daquelas em C. Os operadores no AWK, em ordem decrescente de precedência, são (…) Agrupamento $ Referência de campo. ++ -- Incrementar e decrementar, tanto prefixo quanto postfix. ^ Exponenciação (** também pode ser usado, e **= para o operador de atribuição). + - ! Unário mais, unário menos e negação lógica. * / % Multiplicação, divisão e módulo. + - Adição e subtração. espaço Concatenação de cordas. < > <= >= != == Os operadores relacionais regulares. ~ !~ Correspondência de expressão regular, correspondência negada. NOTA: Não use uma expressão regular constante (/ foo /) no lado esquerdo de um ~ ou !~. Use apenas um no lado direito. A expressão / foo / ~ exp tem o mesmo significado que (($ 0 ~ / foo /) ~ exp ). Isso geralmente é não o que foi pretendido. em Assinatura de matriz. && E lógico. || OR lógica. ?: A expressão condicional de C. Isto tem a forma expr1 ? expr2 : expr3 . E se expr1 é verdade, o valor da expressão é expr2 , caso contrário é expr3 . Apenas um dos expr2 e expr3 é avaliado. = += -= *= /= %= ^= Tarefa. Ambas as atribuições absolutas ( var = valor ) e atribuição de operador (os outros formulários) são suportados. As instruções de controle são as seguintes: E se ( condição ) declaração outro declaração enquanto ( condição ) declaração Faz declaração enquanto ( condição ) para ( expr1 ; expr2 ; expr3 ) declaração para ( var em array ) declaração pausa continuar excluir array índice excluir array Saída expressão { afirmações } As instruções de entrada / saída são as seguintes: perto( Arquivo , como ) Feche o arquivo, o tubo ou o coprocessamento. O opcional como só deve ser usado ao fechar uma extremidade de um tubo de duas vias para um co-processo. Deve ser um valor de string, seja "para" ou "de". Obter linha Conjunto $0 a partir do próximo registro de entrada; conjunto NF, NR, FNR. getline < Arquivo Conjunto $0 do próximo registro de Arquivo ; conjunto NF. Obter linha var Conjunto var a partir do próximo registro de entrada; conjunto NR, FNR. Obter linha var < Arquivo Conjunto var do próximo registro de Arquivo . comando | Obter linha var Corre comando canalizar a saída para $0 ou var como acima. comando | & getline var Corre comando como um co-processo que canaliza a saída para $0 ou var como acima. Co-processos são um gawk extensão. Próximo Pare de processar o registro de entrada atual. O próximo registro de entrada é lido e o processamento recomeça com o primeiro padrão no programa AWK. Se o final dos dados de entrada for atingido, o FIM bloco (s), se houver, são executados. nextfile Pare de processar o arquivo de entrada atual. A próxima leitura de registro de entrada vem do próximo arquivo de entrada. NOME DO ARQUIVO e ARGIND são atualizados FNR é redefinido para 1 e o processamento começa novamente com o primeiro padrão no programa AWK. Se o final dos dados de entrada for atingido, o FIM bloco (s), se houver, são executados. impressão Imprime o registro atual. O registro de saída é finalizado com o valor do ORS variável. impressão lista de expr Imprime expressões. Cada expressão é separada pelo valor do OFS variável. O registro de saída é finalizado com o valor do ORS variável. impressão lista de expr > Arquivo Imprime expressões em Arquivo . Cada expressão é separada pelo valor do OFS variável. O registro de saída é finalizado com o valor do ORS variável. printf fmt, expr-list Formatar e imprimir. printf fmt, expr-list > Arquivo Formatar e imprimir em Arquivo . sistema( cmd-line ) Execute o comando cmd-line e retorne o status de saída. (Isso pode não estar disponível em sistemas não POSIX.) fflush ( Arquivo ) Libere todos os buffers associados ao arquivo ou canal de saída aberto Arquivo . E se Arquivo está faltando, a saída padrão é liberada. E se Arquivo é a string nula, então todos os arquivos e canais de saída abertos têm seus buffers liberados. Redirecionamentos de saída adicionais são permitidos para impressão e printf. imprimir … >> Arquivo acrescenta saída ao Arquivo . imprimir … | comando escreve em um tubo. imprimir … | & comando envia dados para um co-processo. o Obter linha O comando retorna 0 no final do arquivo e -1 em um erro. Em caso de erro, ERRNO contém uma string descrevendo o problema. NOTA: Se estiver usando um tubo ou co-processo para Obter linhaou de impressão ou printf dentro de um loop, você devo usar perto() para criar novas instâncias do comando. O AWK não fecha automaticamente pipes ou coprocessos quando retornam EOF. As versões AWK do printf declaração e sprintf () função (veja abaixo) aceita os seguintes formatos de especificação de conversão: % c Um caractere ASCII. Se o argumento usado para % c é numérico, é tratado como um caractere e impresso. Caso contrário, o argumento é considerado uma string e o único primeiro caractere dessa sequência é impresso. % d, %Eu Um número decimal (a parte inteira). % e,% E Um número de ponto flutuante do formulário - d.dddddde + - dd. o % E usos de formato E ao invés de e. % f Um número de ponto flutuante do formulário - ddd.dddddd. % g,% G Usar % e ou % f conversão, o que for menor, com zeros não significativos suprimidos. o% G usos de formato % E ao invés de % e. % o Um número octal não assinado (também um inteiro). %você Um número decimal não assinado (novamente, um inteiro). % s Uma cadeia de caracteres. % x,% X Um número hexadecimal não assinado (um inteiro). o % X usos de formato ABCDEF ao invés deabcdef. %% Um único % personagem; nenhum argumento é convertido. Parâmetros adicionais opcionais podem estar entre o % e a carta de controle: contagem $ Use o contagem 'th argumento neste momento na formatação. Isso é chamado de especificador posicional e destina-se principalmente ao uso em versões traduzidas de strings de formato, não no texto original de um programa AWK. É um gawk extensão. - A expressão deve ser justificada à esquerda em seu campo. espaço Para conversões numéricas, prefixar valores positivos com um espaço e valores negativos com um sinal de menos. + O sinal de mais, usado antes do modificador de largura (veja abaixo), diz para sempre fornecer um sinal para conversões numéricas, mesmo que os dados a serem formatados sejam positivos. o + substitui o modificador de espaço. # Use um `` formulário alternativo '' para certas letras de controle. Para % o, forneça um zero à esquerda. Para % xe % X, fornecer um líder 0x ou 0X para um resultado diferente de zero. Para % e, % Ee % f, o resultado sempre contém um ponto decimal. Para % ge % G, zeros à direita não são removidos do resultado. 0 Uma liderança 0 (zero) age como um sinalizador, que indica que a saída deve ser preenchida com zeros em vez de espaços. Isso se aplica até mesmo a formatos de saída não numéricos. Esse sinalizador só tem efeito quando a largura do campo é maior que o valor a ser impresso. largura O campo deve ser preenchido para essa largura. O campo é normalmente preenchido com espaços. Se o 0flag foi usado, é preenchido com zeros. . prec Um número que especifica a precisão a ser usada ao imprimir. Para o % e, % Ee % fformatos, isso especifica o número de dígitos que você deseja imprimir à direita do ponto decimal. Para o % ge % G formatos, especifica o número máximo de dígitos significativos. Para o % d, % o, %Eu, %você, % xe % X formatos, especif
Descrição
Formato de opção
Opções
Variáveis, Registros e Campos
Registros
Campos
Variáveis Embutidas
Matrizes
Digitação Variável e Conversão
Constantes octais e hexadecimais
Constantes de cordas
Padrões e Ações
Padrões
Expressões regulares
Ações
Operadores
Declarações de Controle
Declarações de I / O
A declaração printf




