The UNIX and Linux Forums  
Hola y bienvenida de los Estados Unidos a la UNIX y Linux Foros! Gracias por su visita y formar parte de nuestra comunidad global.

Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de scripts de shell y
.
google unix.com



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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 06-05-2008
synmag synmag is offline
Usuario Registrado
  
 

Fecha: junio 2008
Publicaciones: 3
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
  #2 (Enlace permanente)  
Old 06-05-2008
lo tan lo tan is offline
Usuario Registrado
  
 

Fecha: Mayo 2008
Puestos: 8
puede darnos un ejemplo de lo que usted intenta alcanzar y sobre la base de que podamos llegar a una solución.
  #3 (Enlace permanente)  
Old 06-06-2008
época era is offline Forum Advisor  
Pastor de Gatos Inútil (en año sabático)
  
 

Fecha: marzo 2008
Ubicación: / hay / es / sólo / bin / sh
Puestos: 3.652
¿Te refieres a algo como esto?

Código:
sed -e 's/.*/^&,/' fileb | grep -f - filea
No todos los grep las versiones de apoyo -f opción, al parecer, pero la idea es simplemente para buscar por cualquier cosa, desde fileb que se encuentra en el primer campo de Filea.
  #4 (Enlace permanente)  
Old 06-06-2008
synmag synmag is offline
Usuario Registrado
  
 

Fecha: junio 2008
Publicaciones: 3
Cita:
Publicado originalmente por época View Post
¿Te refieres a algo como esto?

Código:
sed -e 's/.*/^&,/' fileb | grep -f - filea
No todos los grep las versiones de apoyo -f opción, al parecer, pero la idea es simplemente para buscar por cualquier cosa, desde fileb que se encuentra en el primer campo de Filea.
Gracias por la respuesta. Mi versión no es compatible, lamentablemente,-f. En cuanto a que el código iba a especificar el nombre de cuenta que estoy buscando? Si quiero decir a la lista de acogida, cuenta, contraseña de root para todas las cuentas? También esta obra para registros en los que el nombre de host está en blanco?

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
  #5 (Enlace permanente)  
Old 06-06-2008
reborg's Avatar
reborg reborg is online now Forum Staff  
Administrador
  
 

Fecha: marzo 2005
Ubicación: Irlanda
Mensajes: 4.211
Cita:
Publicado originalmente por época View Post
No todos los grep las versiones de apoyo -f opción, al parecer, pero la idea es simplemente para buscar por cualquier cosa, desde fileb que se encuentra en el primer campo de Filea.
Cierto, pero la mayoría de que no apoyará ni egrep-f o fgrep.
  #6 (Enlace permanente)  
Old 06-09-2008
época era is offline Forum Advisor  
Pastor de Gatos Inútil (en año sabático)
  
 

Fecha: marzo 2008
Ubicación: / hay / es / sólo / bin / sh
Puestos: 3.652
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
El NR \u003d\u003d FNR condición es verdadero, mientras que fileb está siendo leído. Este es un común awk idioma para leer en un fichero de datos auxiliares antes de la transformación principal. Los nombres de host en fileb se utilizará para rellenar la matriz h. Luego, en el cuerpo principal de la secuencia de comandos, si el primer campo está vacío, el valor de la anfitrión variable se utiliza para $ 1. Entonces el valor actual de $ 1 será recordado en anfitrión en caso de que la línea siguiente (s) han primeros campos vacíos. Entonces, si la matriz h no contiene el actual nombre de host (es decir, que no estuvo presente en fileb), La línea actual se omite. Por último, si el segundo campo es idéntico al de la variable su cuenta, La línea se imprime.

(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.)
  #7 (Enlace permanente)  
Old 06-11-2008
synmag synmag is offline
Usuario Registrado
  
 

Fecha: junio 2008
Publicaciones: 3
Cita:
Publicado originalmente por época View Post
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
El NR \u003d\u003d FNR condición es verdadero, mientras que fileb está siendo leído. Este es un común awk idioma para leer en un fichero de datos auxiliares antes de la transformación principal. Los nombres de host en fileb se utilizará para rellenar la matriz h. Luego, en el cuerpo principal de la secuencia de comandos, si el primer campo está vacío, el valor de la anfitrión variable se utiliza para $ 1. Entonces el valor actual de $ 1 será recordado en anfitrión en caso de que la línea siguiente (s) han primeros campos vacíos. Entonces, si la matriz h no contiene el actual nombre de host (es decir, que no estuvo presente en fileb), La línea actual se omite. Por último, si el segundo campo es idéntico al de la variable su cuenta, La línea se imprime.

(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.)
Eso es exactamente lo que quería. Mi versión de awk no apoyó la aprobación de la variable, pero sí tengo nawk y funcionó perfectamente.

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!
Closed Thread

Marcadores

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Encendido




Todas las horas son GMT -4. La hora es 12:55 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0