übergibt grep in eine Variable in bash

7

Ich habe eine Datei namens email.txt wie diese:

%Vor%

Ich möchte nur die E-Mail-Adresse in dieser Datei mit bash script.So ich dieses Skript in meinem Bash-Skript namens myscript:

%Vor%

Aber ich konnte dieses Skript nicht ausführen. Wenn ich diesen Befehl manuell in bash ausführe, kann ich die E-Mail-Adresse erhalten:

%Vor%

Ich muss die E-Mail-Adresse in einer Variablen speichern, damit ich sie in einer anderen Funktion verwenden kann. Kann mir jemand zeigen, wie ich dieses Problem lösen kann? Danke.

    
newbie.my 12.06.2012, 08:15
quelle

5 Antworten

10

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

%Vor%

Ich bin mir nicht sicher, was file=$(myscript) tun sollte, aber in der nächsten Zeile möchten Sie einen Dateinamen als Argument für awk , also sollten Sie einfach email.txt als String-Wert zuweisen file , führe keinen Befehl namens myscript aus. $var1 ist kein Befehl (es ist nur eine Zeile aus Ihrer Textdatei), also müssen Sie echo , um grep etwas Nützliches für die Arbeit zu geben. Die zusätzlichen Klammern um grep sind redundant.

    
flesk 12.06.2012, 08:34
quelle
9

Was passiert ist das:

%Vor%

Sie müssen so etwas tun:

%Vor%

oder sogar

%Vor%     
puckipedia 12.06.2012 08:29
quelle
0

Es gibt sehr hilfreiche Flags für bash: -xv

Die Zeile mit

%Vor%

sollte

sein %Vor%

Auch meine Version von grep hat keine -o Flag.

Und solange grep-Muster "gierig" sind, auch wenn der folgende Code läuft, ist die Ausgabe nicht genau das, was Sie wollen.

%Vor%     
gshilin 12.06.2012 08:32
quelle
0

Verwenden Sie Bash parameter expansion ,

%Vor%     
Prince John Wesley 12.06.2012 09:14
quelle
0

Es gibt einen gröberen Weg:

Katze $ Datei | grep @ | tr '& lt; & gt;' '\ 012 \ 012' | grep @

Das heißt, extrahieren Sie die Zeile [s] mit @ Zeichen, drehen Sie die spitzen Klammern in Zeilenumbrüche, und grep dann erneut für alles, was mit einem @ Zeichen übrig ist.

Verfeinern nach Bedarf ...

    
Peter Flynn 26.02.2015 15:00
quelle

Tags und Links