![]() |
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui. |
Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
|
||||
| Fio | Thread Starter | Fórum | Respostas | Última postagem |
| Múltiplos separadores de campos no awk? (Primeira um espaço e, em seguida, um cólon) | doubleminus | UNIX para Dummies Perguntas & Respostas | 3 | 04-27-2008 03:28 |
| Preciso de ajuda para contagem dos campos e separadores de campos usando Nawk | scrappycc | Programação Shell Script e | 3 | 02-06-2008 11:47 |
| você pode redirecionar vários arquivos de entrada? | Matrix_Prime | UNIX para Dummies Perguntas & Respostas | 4 | 02-27-2005 07:07 |
| Awk Múltipla Campo Separators | Tonka52 | Programação Shell Script e | 7 | 04-07-2004 09:37 |
| Multiple Output Campo de arquivo de banco de dados | Dennz | UNIX para Dummies Perguntas & Respostas | 3 | 09-01-2003 12:41 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Eu vi um jovem de postos de trabalho aqui referenciando como lidar com mais de um campo de entrada no separador awk. Eu imaginei que eu gostaria de partes (só!) Descobriu a forma de transformar essa linha em um logfile:
90000000000000000000010001 nome D0.90000000000103787900010001QF840840916070000007085814Y216254 @ D1111111111111111 \u003d 1107xxxxxxxxxxxxxxx x919MENCHIES para este formato: 90000000000000000000010001, nome 840840916070000007085814Y216654, 1111111111111111,1107,919 MENCHIES Eu tenho um script todo uma vez que este é apenas um passo num processo de transformar registros em informações úteis, mas veja a parte relevante. # Autor: kinksville # Data: 24 de abril de 2008 # Revisto: 24 de abril de 2008 # Revisão: Revisão 1,00 # Outros arquivos: cclookup.s, cclookup.rep # Changelog: # 24 de abril de 2008: Primeiro criação do script. # # End changelog. BEGIN ( FS \u003d "[\. QF \ @ D \u003d x] +" OFS \u003d "," ) # Primeira iteração do @ D pesquisa, o descascamento. personagem e inserindo uma OFS. / \ @ D / (# Pesquisa para qualquer linha que contenha a string @ D report2 \u003d "cclookup.rep2"; # Definir report2 variável. relatório \u003d "cclookup.rep"; # Definir relatório variável. num_cclookup + +; # auth Obter número de pedidos. print $ 1, $ 2, $ 5, $ 6, $ 7, $ 8> relatório; print $ 0> report2; ) # Fim do @ D pesquisa. A chave é o fato de que awk irá aceitar uma expressão regular como arquivo separador. Este regexp FS \u003d "[\. QF \ @ D \u003d x] +" jogos espaços, o. QF a string, a string @ D, a \u003d, eo caráter x. A + após a rasteira braquete é a chave, uma vez que permite a 1 ou mais ocorrências de qualquer um dos caracteres que coincidem com a regexp. Isso significa que x e xxxxxx são ambos tratados como um único campo de separação. Eu ainda preciso de trabalhar na produção, já que agora eu preciso para cortar o nome fora da final do último campo. Infelizmente, o número do último campo pode ir em qualquer lugar 9999999-1 e que é a parte que eu quero preservar. Talvez um [^ 0-9] + expressão? |
|
||||
|
Eu estava um pouco confuso com o facto de QF @ D e estavam trabalhando também. Penso que a sua porque [QF] + jogos QQ QQQ QF QQFF etc
Não é tão limpa quanto eu ia gostar, mas os personagens são sempre naquele determinado lugar na autenticado mensagem, por isso ele faz o que eu quero fazer. I'll sub na sua expressão e ver o que acontece muito ![]() |
|
||||
|
Não temos tanta sorte
Citação:
![]() Nenhum destes fragmentos funcionou corretamente para mim. O FS sintaxe que você usou provavelmente mudou o número de campos e assim eles não obter todos os impressos. O segundo trecho parecia apenas para adicionar o # 1 para o último campo ou seja (, 619MENCHIES1). Eu vou jogar com ela um pouco mais e ver o que acontece. |
|
||||
|
Código:
#This script scans the appropriate log file and copies lines containing authorization requests to the output.
#All output is comma separated.
#Author: kinksville
#Date: April 24, 2008
#Revised: April 25, 2008
#Revision: Revision 1.01
#Other files: cclookup.s, cclookup.rep
#Changelog:
#April 24, 2008: Initial creation of the script.
#April 25, 2008: Updated the regex for the input FS to match multiple characters.
#
#End changelog.
BEGIN {
#Input field separators will match any of the following characters/strings: blank space, . , QF, @D, =, x (repeating).
#The + on the outside of the brackets will allow it to match 0 or more instances of any of the characters/strings in any combination.
#% Any comments with the % sign are temporarily there for testing purposes.
FS="[ \. QF \@D = x]+"
#Output field separator is defined as a comma.
OFS = ","
}
#@D search, stripping out the field separator characters and inserting a OFS.
/\@D/ { #Search for any line containing the string @D
last_field=$8 ;
sub(/[^0-9]*/,"",last_field );
dollar_val=last_field/100 ;
report="cclookup.rep"; #Define report variable.
num_cclookup++; #Get number of auth requests.
field1=$1 ;
field2=$2 ;
field3=$5 ;
field4=$6 ;
field5=$7 ;
printf ("%s,%s,%s,%s,%s,$%-.2f\n",field1,field2,field3,field4,field5,dollar_val) > report
#print $1, $2, $5, $6, $7, $8 > report; #Print fields 1-2 with the OFS between them to report.
} #End of the @D search.
Última edição por kinksville; em 04/25/2008 05:13.. Motivo: Removido nome completo dos comentários. |
![]() |
| Marcadores |
| Tags |
| awk, awk caimento, caimento, caimento awk |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|