![]() |
|
|
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 |
| Analizar el Informe de archivo de la Generación (String analizar y división) | umar.shaikh | Programación de scripts de shell y | 8 | 03-02-2009 01:38 AM |
| analizar el campo de longitud fija con Yacc / bisonte | sungita | Programación de Alto Nivel | 1 | 01-27-2009 11:27 AM |
| Leer una cadena con espacios y encontrar la longitud de la cadena | dayamatrix | UNIX for Dummies Preguntas y Respuestas | 2 | 11-13-2008 10:08 AM |
| Parsing un registro de longitud variable | Barb | UNIX for Dummies Preguntas y Respuestas | 17 | 10-01-2004 09:37 AM |
| Analizar los datos y mantener toda la longitud de la variable | app4dxh | Programación de scripts de shell y | 3 | 11-22-2002 12:04 PM |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
Parsing 286 caracteres de longitud de cadena
Hola Amigos,
Que tengo. Txt que tiene 13.000 registros. Cada registro es de 278 caracteres de largo. Estoy utilizando a continuación el código para extraer la cadena y lleva casi 10 minutos. Cualquier sugerencia por favor. cat filename.txt | while read línea hacer f1 \u003d `echo $ line | awk '(print substr ($ 1,1,9))'` f2 \u003d `echo $ line | awk '(print substr ($ 1,10,20))'` f3 \u003d `echo $ line | awk '(print substr ($ 1,30,50))'` f4 \u003d `echo $ line | awk '(print substr ($ 1,80,10))'` f5 \u003d `echo $ line | awk '(print substr ($ 1,90,50))'` f6 \u003d `echo $ line | awk '(print substr ($ 1,140,10))'` f7 \u003d `echo $ line | awk '(print substr ($ 1,150,50))'` f8 \u003d `echo $ line | awk '(print substr ($ 1,200,10))'` f9 \u003d `echo $ line | awk '(print substr ($ 1,210,50))'` F10 \u003d `echo $ line | awk '(print substr ($ 1,260,10))'` f11 \u003d `echo $ line | awk '(print substr ($ 1,270,8))'` f12 \u003d `echo $ line | awk '(print substr ($ 1,278,8))'` s1 \u003d `echo $ f1" | "$ f2" | "$ f3" | "$ f4" | "$ f5" | "` s2 \u003d `echo $ f6" | "$ f7" | "$ f8" | "` s3 \u003d `echo $ f9" | "$ F10" | "` s4 \u003d `echo $ f11" | "$ f12» echo $ s1 $ s2 $ s3 $ s4>> FinalResult.txt hecho |
|
||||
|
Un simple método es la creación de script parse.awkCódigo:
{
f1=substr($1,1,9);
f2=substr($1,10,20);
f3=substr($1,30,50);
f4=substr($1,80,10);
f5=substr($1,90,50);
f6=substr($1,140,10);
f7=substr($1,150,50);
f8=substr($1,200,10);
f9=substr($1,210,50);
f10=substr($1,260,10);
f11=substr($1,270,8);
f12=substr($1,278,8);
OFS="|";
print f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12;
print "\n";
}
A continuación, ejecute Código:
awk -f parse.awk filename.txt > FinalResult.txt Creo que su código original está tomando mucho tiempo, ya que cada backtick, eco y awk es un nuevo proceso de desove |
|
|||||
|
|
||||
|
PPL Hola ..
lo que si tengo la línea como esta A BCD lo que indica que el primer campo es f1 \u003d A, f2 \u003d f3 \u003d BCD es decir, segundo campo de 6 caracteres en blanco. Así que ahora si uso el script de arriba, no soy capaz de obtener los campos en este caso. ¿Puede sugerir, por favor, en ese caso cómo hacerlo? Cheers Amit |
|
|||||
|
|
||||
|
Gracias a todos por su respuesta.
Solía sugerencia proporcionada por cfajohnson y ahora tiene sólo 20 secconds para analizar los 800.000 registros. Muchas gracias, Prashant |
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|