![]() |
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 |
| cómo leer disco de registro de un archivo en unix | raoscb | UNIX for Dummies Preguntas y Respuestas | 1 | 05-16-2008 07:30 AM |
| Script para búsqueda de un mal registro en un archivo a continuación, poner el expediente en el archivo de la mala | shilendrajadon | Programación de scripts de shell y | 2 | 12-28-2007 10:02 AM |
| Script para búsqueda de un mal registro en un archivo a continuación, poner el expediente en el archivo de la mala | shilendrajadon | UNIX para usuarios avanzados y expertos | 1 | 12-28-2007 10:00 AM |
| reparto de un registro y añadir un registro a un archivo | rsolap | Programación de scripts de shell y | 1 | 08-13-2007 02:58 PM |
| Seleccione el texto dentro de concordancia () paréntesis | cursiva | UNIX for Dummies Preguntas y Respuestas | 4 | 04-20-2007 03:14 AM |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
seleccione un registro de un archivo correspondiente del segundo archivo con awk
Necesito ayuda
![]() Tengo dos archivos de entrada y me gustaría generar un informe basado en los dos. Filea: hostname, account1, contraseña , account2, contraseña hostname, account1, contraseña hostname, account1, contraseña , account1, contraseña , account2, contraseña la repetición de los nombres de las máquinas están en blanco fileb: hosta hostb hostc Tengo que generar un registro de "nombre de la contraseña de la cuenta" para todas las máquinas en que se producen en fileb Filea para una cuenta específica. Es decir, quiero una lista de las contraseñas de root para todos los hosts en fileb. Sé que la lógica quiero usar, pero carecen de la habilidades de scripting para su aplicación. Creo que la manera más fácil sería utilizar awk para llenar los espacios en blanco con el nombre de host de Filea y luego simplemente usar un script de shell a grep para cada host en fileb de la nueva Filea. La otra forma consiste en reducir Filea para cada nombre de host en fileb hasta que la cuenta se corresponde o el nombre de host es diferente y el resultado de impresión. Si la cuenta no existe para dar el nombre de host no hacer nada. Estoy tratando de guardar manualmente haciendo esto por el pensamiento de secuencias de comandos que sería más rápido, pero tal vez me equivoqué ![]() Aquí está el marco llegué hasta el momento de la manera más difícil, ya que sería más elegante ![]() #! / bin / sh # hosts \u003d `cat hosts.txt» hostname \u003d "x" último \u003d "x" para el nombre en $ (host) hacer # awk la lógica vendría aquí hecho |
|
||||
|
puede darnos un ejemplo de lo que usted intenta alcanzar y sobre la base de que podamos llegar a una solución.
|
|
||||
|
¿Te refieres a algo como esto?
Código:
sed -e 's/.*/^&,/' fileb | grep -f - filea |
|
||||
|
Cita:
Para aclarar el problema, Filea tiene espacios en blanco para repetir los nombres de las máquinas y decir si es la raíz de un registro donde no hay nombre de host, ¿cómo obtener el nombre de host para el disco? El nombre de la máquina que estoy buscando es el no registro en blanco antes. ejemplo: hosta, juansoto, abc123 , raíz, 4009dlkj hostb, janedoe, rrrrrr si es acogida en un fileb la esperada salida de la raíz es hosta, raíz, 4009dlkj Estaba tratando de usar awk para sustituir el blanco con un nombre de la anterior nonblank registro pero seguí recibiendo errores. No podía almacenar hasta $ 1 a una variable e imprimirla como una prueba. Yo sé sed es muy potente, pero no creo que esto se podría hacer con una sola línea. Terminé haciendo manualmente anoche. En este punto es mentes inquisitivas quieren saber y que podría ser útil si tengo que hacerlo de nuevo. TIA |
|
||||
|
Oh, he entendido mal la descripción de su problema. Aquí hay algo que está más cerca de esperar a lo que quería.
Código:
awk -F , -v acct=root 'NR==FNR { h[$1]++; next; }
{ if($1 == "") $1=host; host=$1; if (! h[$1]) next;
if ($2 == acct) print }' fileb filea
(Really antigua de las variantes awk no admiten que pasa en las variables con el -v opción - si usted tiene este problema, vea si puede encontrar nawk o mawk o gawk en su sistema, o una XPG4 awk. O puede interpolar la variable directamente en el guión.) |
|
||||
|
Cita:
Sobre la base de la documentación awk yo estaba tratando de utilizar el bloque de comenzar a leer el archivo, pero no pudo averiguar cómo leer a partir de dos archivos. ¿Puede explicar cómo awk determina que el archivo para leer desde? ¿Es el código en el primer conjunto de llaves () lee el primer archivo suministrado el segundo set y el segundo archivo? Gracias. Aprendí mucho de esto! |
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|