![]() |
|
|
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 |
| Cambio de una columna del archivo delimitado por columna a columna de ancho fijo | manneni Prakash | Programación de scripts de shell y | 5 | 06-22-2009 06:27 AM |
| files.say uno y dos b.both desde hace mucho tiempo columns.i quiere coincidir con la columna 1 de fronteras archivo w | Mf | UNIX for Dummies Preguntas y Respuestas | 4 | 10-17-2008 02:17 PM |
| Insertar la primera línea de un archivo a la primera columna de los archivos restantes | a_artha | Programación de scripts de shell y | 5 | 07-28-2008 06:47 AM |
| Cómo verificar los valores nulos en un archivo de la columna por columna si las columnas no son valores NULL | Mandab | Programación de scripts de shell y | 7 | 03-15-2008 09:57 AM |
| cols de unirse a múltiples archivos en un archivo | vbshuru | Programación de scripts de shell y | 2 | 11-20-2003 12:52 PM |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
Soy nuevo de UNIX shell scripting. Estoy recientemente un excelente informe de generación en UNIX (archivo con delimitador está bien). ¿Cómo debo hacer un script para hacerlo?
1 archivo a unirse viene de salida de un comando de UNIX, el segundo de otro comando de UNIX, y el tercero de una base de datos de consulta. La clave columes de todos estos 3 archivos proceden de un archivo de asignación. Se trata básicamente de la siguiente manera: MappingFile: \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d job1 a_name1 job2 c_name2 job3 b_name3 job4 e_name4 file1_toJOIN: \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d b_name3 12:00:03 15:00:09 e_name4 10:30:00 11:00:00 c_name2 09:40:00 10:12:00 a_name1 22:00:00 23:00:00 file2_toJOIN: \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d job2 tom 22 job1 dan 18 job4 Jim 25 job3 kim 20 la hoja de cálculo para generar el formato: \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d job1 22:00:00 23:00:00 01:00:00 dan 18 ...... Apreciamos su ayuda! |
|
||||
|
¡Prueba esto!
probar esta
i en el `gato mapa | awk 'BEGIN (FS \u003d" "), (print $ 1)'` hacer $ i \u003d mapkey1 mapkey2 \u003d `cat mapa | grep $ mapkey1» mapkey2 \u003d `echo $ mapkey2 | awk 'BEGIN (FS \u003d" "), (print $ 2)'` file1key \u003d `cat archivo1 | grep $ mapkey2» file1key \u003d `echo $ file1key | awk 'BEGIN (FS \u003d" "), (print $ 2, $ 3)'` file2key \u003d `cat archivo2 | grep $ mapkey1» file2key \u003d `echo $ file2key | awk 'BEGIN (FS \u003d" "), (print $ 2, $ 3)'` echo $ i $ file1key $ file2key hecho mapa - mapa de su archivo archivo1 - su file1_toJOIN archivo2 - file2_toJOIN: El o / pi obtenido es el siguiente: job1 22:00:00 23:00:00 dan 18 job2 09:40:00 10:12:00 tom 22 job3 12:00:03 15:00:09 kim 20 job4 10:30:00 11:00:00 Jim 25 |
|
||||
|
Código:
nawk 'NR==FNR{
arr[$1]=$2
brr[$2]=$1
}
NR!=FNR{
if (arr[$1]=="")
brr[$1]=sprintf("%s %s",$2,$3)
else
print $1" "brr[arr[$1]]" "$2" "$3
}' map file1 file2
|
|
||||
|
Apreciamos los dos.
He probado el primer script. Funciona perfectamente. Me siento un poco difícil de entender matriz, como un script de shell principiante. Pero voy a intentar mañana, como se ve realmente compacto. Me gustaría utilizar en el futuro. |
|
||||
|
Con las observaciones para una mejor comprensión
# Abrir el archivo
i en el `gato mapa | awk 'BEGIN (FS \u003d" "), (print $ 1)'` hacer # Column1 mapa en el archivo es la clave para archivo2 $ i \u003d mapkey1 mapkey2 \u003d `cat mapa | grep $ mapkey1» # Column2 en el mapa es clave para el archivo archivo1 mapkey2 \u003d `echo $ mapkey2 | awk 'BEGIN (FS \u003d" "), (print $ 2)'` # Selección de valores de archivo1 basado en archivo de mapa de mapkey2 file1key \u003d `cat archivo1 | grep $ mapkey2» file1key \u003d `echo $ file1key | awk 'BEGIN (FS \u003d" "), (print $ 2, $ 3)'` # Selección de valores de archivo2 basada en archivo de mapa de mapkey1 file2key \u003d `cat archivo2 | grep $ mapkey1» file2key \u003d `echo $ file2key | awk 'BEGIN (FS \u003d" "), (print $ 2, $ 3)'` # Diplay los resultados echo $ i $ file1key $ file2key hecho |
|
||||
|
Gracias, Prasperl.
Usé ksh, por alguna razón, me dio error awk Syntex. Después de haber eliminado separador de campo, que permiten a través de mí. ¿Sabe el motivo? |
|
||||
|
¿Podría usted por favor enviar el código u utilizado y el mensaje de error?
|
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|