GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Übergeben von grep an eine Variable in bash

Folgendes passiert:

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).

Sie müssen etwa so vorgehen:

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

oder sogar

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

Ich denke, das ist ein zu komplizierter Weg, aber wenn Sie Ihr Skript einfach zum Laufen bringen wollen, versuchen Sie Folgendes:

#!/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

Ich bin mir nicht sicher, was file=$(myscript) ist sollte es tun, aber in der nächsten Zeile möchten Sie einen Dateinamen als Argument für awk , also sollten Sie einfach email.txt zuweisen als Stringwert zu file , keinen Befehl namens myscript ausführen . $var1 ist kein Befehl (es ist nur eine Zeile aus Ihrer Textdatei), also müssen Sie echo es um grep zu geben alles, was nützlich ist, um damit zu arbeiten. Die zusätzlichen Klammern um grep sind überflüssig.


Linux
  1. Bash Dynamische (Variable) Variablennamen?

  2. Ich möchte alle Befehlszeilenargumente für ein Bash-Skript in einer einzigen Variablen speichern

  3. Alias ​​mit Variable in Bash

  4. Ausgabe des letzten Befehls automatisch mit Bash in eine Variable erfassen?

  5. Bash erfasst die Ausgabe von awk in ein Array

Bash-Declare-Anweisung:Syntax und Beispiele

Bash-Exportvariable

Bash printf - So drucken Sie eine Variable in Bash

Bash-Scripting – Variablen mit Beispielen erklärt

So setzen Sie die Umgebungsvariable in Bash

Wie man einen Abschnitt einer Datei in der Bash-Shell grep