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.
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.
Was passiert ist das:
%Vor%Sie müssen so etwas tun:
%Vor%oder sogar
%Vor%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 ...