GNU/Linux >> Tutoriales Linux >  >> Linux

pasar grep a una variable en bash

Lo que está pasando es esto:

var2=$("$var1" | (grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b'))
       ^^^^^^^ Execute the program named (what is in variable var1).

Tienes que hacer algo como esto:

var2=$(echo "$var1" | grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b')

o incluso

var2=$(awk 'NR==2' $file | grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b')

Creo que esta es una forma demasiado complicada de hacer las cosas, pero si solo quiere que su secuencia de comandos funcione, intente esto:

#!/bin/bash

file="email.txt"

var1=$(awk 'NR==2' $file)

var2=$(echo "$var1" | grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b')

echo $var2

No estoy seguro de qué file=$(myscript) se suponía que debía hacerlo, pero en la siguiente línea desea un nombre de archivo como argumento para awk , por lo que solo debe asignar email.txt como un valor de cadena a file , no ejecute un comando llamado myscript . $var1 no es un comando (es solo una línea de su archivo de texto), por lo que debe echo para dar grep cualquier cosa útil para trabajar. Los paréntesis adicionales alrededor de grep son redundantes.


Linux
  1. Bash Dynamic (variable) ¿Nombres de variables?

  2. Alias ​​con variable en bash

  3. ¿Capture automáticamente la salida del último comando en una variable usando Bash?

  4. ¿Cómo eliminar la variable de solo lectura en bash?

  5. ¿Redirigir la salida del comando de tiempo en Unix a una variable en bash?

Declaración Bash declare:sintaxis y ejemplos

Variable de exportación de bash

Bash printf - Cómo imprimir una variable en Bash

Bash Scripting - Variables explicadas con ejemplos

Cómo establecer la variable de entorno en Bash

bash - coincidencia de variables que no distingue entre mayúsculas y minúsculas