![]() |
Hola y bienvenida de los Estados Unidos a la UNIX y Linux Foros! Gracias por su visita y formar parte de nuestra comunidad global.
|
|
google unix.com
|
|||||||
| Foros | Registro | Reglas de los Foros | Enlaces | Álbumes | Preguntas más frecuentes | Lista de miembros | Calendario | Búsqueda | Puestos de hoy | Marcar Foros Como Leídos |
| Programación de scripts de shell y Plantear preguntas sobre KSH, CSH, SH, BASH, PERL, PHP, SED, AWK y otros scripts de shell y lenguajes de script de shell aquí. |
Más UNIX y Linux Foro Temas usted puede encontrar útiles
|
||||
| Hilo | Hilo para principiantes | Foro | Respuestas | Último mensaje |
| Varios separadores de campo en awk? (En primer lugar, un espacio y, a continuación, dos puntos) | doubleminus | UNIX for Dummies Preguntas y Respuestas | 3 | 04-27-2008 04:28 PM |
| Necesito ayuda para contar los campos y separadores de campo utilizando Nawk | scrappycc | Programación de scripts de shell y | 3 | 02-06-2008 11:47 PM |
| se puede redirigir los archivos múltiples para la entrada? | Matrix_Prime | UNIX for Dummies Preguntas y Respuestas | 4 | 02-27-2005 07:07 PM |
| Awk varios separadores de campo | Tonka52 | Programación de scripts de shell y | 7 | 04-07-2004 10:37 PM |
| Salida de campo de la base de datos de múltiples archivos | Dennz | UNIX for Dummies Preguntas y Respuestas | 3 | 09-01-2003 01:41 PM |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
Vi un par de posts referencias a manejar más de un separador de campo de entrada en awk. Me imaginé cómo me gustaría compartir I (sólo!) Descubre que puede convertir esta línea en un 'log':
90000000000000000000010001 nombre D0.90000000000103787900010001QF840840916070000007085814Y216254 @ D1111111111111111 \u003d 1107xxxxxxxxxxxxxxx x919MENCHIES en este formato: 90000000000000000000010001, nombre, 840840916070000007085814Y216654, 1111111111111111,1107,919 MENCHIES Tengo toda una secuencia de comandos ya que este es sólo un paso en el proceso de convertir los registros en información útil, pero la parte pertinente Heres. # Autor: kinksville # Fecha: 24 de abril de 2008 # Revisado: 24 de abril de 2008 # Versión: Versión 1.00 # Otros archivos: cclookup.s, cclookup.rep # Changelog: # 24 de abril de 2008: la creación inicial de la secuencia de comandos. # # Fin de cambios. BEGIN ( FS \u003d "[\. QF \ @ D \u003d x] +" OFS \u003d "," ) # Primera iteración @ D de la búsqueda, el paso de los. la inserción de un carácter y OFS. / \ @ D / (# Buscar cualquier línea que contenga la cadena @ D report2 \u003d "cclookup.rep2"; # Definir report2 variable. informe \u003d "cclookup.rep"; # Definir informe variable. num_cclookup + +; # Obtener el número de solicitudes de autorización. print $ 1, $ 2, $ 5, $ 6, $ 7, $ 8> informe; print $ 0> report2; ) # Fin de la búsqueda D @. La clave es el hecho de que awk acepta una expresión regular como separador de archivo. Este expreg FS \u003d "[\. QF \ @ D \u003d x] +" coincide con los espacios, el archivo. QF la cadena, la cadena @ D, la \u003d, y el carácter x. El + después de que el soporte de los rezagados es la clave, ya que permite que por 1 o más instancias de cualquiera de los personajes acompañados de la expresión regular. Esto significa que x xxxxxx y son tratados como un separador de campo. Todavía tienen que trabajar en la salida, ya que ahora tengo que cortar el nombre de la final del último campo. Lamentablemente, el número en el último campo puede ir en cualquier lugar de 9999999 a 1 y que es la parte que quiero conservar. Tal vez un [^ 0-9] + expresión? |
|
||||
|
Estaba un poco confundido por el hecho de que QF y @ D estaban trabajando demasiado. Creo que su causa [QF] + coincide con QQ QQQ QF QQFF etc
No es tan limpio como yo, pero como los personajes son siempre en ese lugar en el mensaje de conectado, por lo que hace lo que yo quiero que. I'll sub en su expresión y ver qué pasa demasiado ![]() |
|
||||
|
Ninguna de esas suerte
Cita:
Cita:
![]() Ninguno de esos fragmentos correctamente trabajado para mí. El FS sintaxis que utilizó probablemente cambió el número de campos y para que no obtener todos los impresos. El segundo fragmento parecía añadir el # 1 para el último campo es decir, (, 619MENCHIES1). Voy a jugar con un poco más y ver qué pasa. |
|
||||
|
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 edición por kinksville; al 04-25-2008 06:13 PM.. Motivo: Eliminado el nombre completo de los comentarios. |
![]() |
| Marcadores |
| Etiquetas |
| awk, awk trim, trim, recortar awk |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|