Script Shell Encuentra una cadena en un archivo

0

Aquí está la estructura de mi archivo:

/**** Some Text here ****/                         
UN  10.147.243.93  51.46 KB   256     34.2%
UN  10.147.243.89  83.05 KB   256     34.6%
DN  10.147.243.88  66.43 KB   256     32.7%            

Aqui esta mi guion

file=$1
echo $file
if grep -q DN $File; then
   echo "Get the corresponding IP address, It is the treatment that I   
         want to do next"
fi

Pero, muestra sólo el nombre del archivo. ¿Tienes alguna idea por favor?

2- Me gustaría entonces, extraer la dirección IP correspondiente. Aquí hay algunos detalles:

if grep -q DN $File; then
   echo "Get the corresponding IP address Guest, It is the treatment 
   that I want to do next"
   variable=This address


fi 

Muchas gracias por la ayuda.

Atentamente.

researcher
fuente
porque no usas -f para especificar el nombre de archivo? También, por favor especifique el shell que está utilizando. "Script" no es suficiente, ya que hay diferencias bastante importantes entre sh, bash, csh, etc.
mnmnc
si grep -q DN -f $ File; entonces --- & gt; muestra "grep - help"
researcher
2
Tienes un error tipográfico: "$ File" frente a "$ file"
bertieb
si se está mostrando grep --help significa que la sintaxis utilizada es incorrecta. Sugiero mover la condición que usaste en if y pruébelo en la consola interactiva: vea por qué no funciona.
mnmnc
tengo que cambiar "$ File" a "$ file" si grep -q DN $ file; entonces - & gt; muestra el mensaje, muchas gracias. Por favor, es posible extraer la dirección IP correspondiente.
researcher

Respuestas:

2

Como se ha señalado, debe corregir el $File error de tipografía.

Dependiendo de lo que haga con la salida, es posible que no necesite la if prueba en absoluto Dice que desea que la dirección IP se almacene en una variable:

file=$1
echo $file
ip=$(grep -e DN $1 | awk '{ print $2; }')
echo $ip

Esto se puede simplificar mucho más para lo que vale, pero coincide con lo que ya tiene.

Tenga en cuenta que esto sólo coincidirá con el primero instancia de una IP correspondiente a 'DN' en el archivo; ese comportamiento está implícito en su uso de la -q opción a grep que sale inmediatamente en el primer partido.

Si quieres hacer algo con cada Ocurrencia, tendrás que hacer algo diferente.

bertieb
fuente