2017-03-07 4 views
-1

Ich weiß, ich mache hier etwas Dummes, aber nicht in der Lage, das funktioniert zu bekommen.grep Ausgabe an TAR

Ich brauche eine Datei grep & aus dieser grep Ausgabe eine TAR-Datei erstellen

grep -a -E '*abcdefg*|*123*|hi' test.txt | tar -czvf test.rar.gz -T - 

Befehl mit folgenden Fehlern Fehler

tar\: abcdefg\t\1488877199\Link\t\thttps\\\://abcdefg//724974226928ars\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1Cannot 

stat\: No such file or directory: Cannot stat: No such file or directory 
    tar: Exiting with failure status due to previous errors 
+0

test.txt nicht wahrscheinlich existieren. Versuche, einen gültigen Dateinamen zu verwenden. –

+0

@ afr0ck die test.txt existierte, kann ich die grep Ausgabe in der Fehlermeldung sehen (jetzt aktualisiert oben) – rkj

+1

Mögliches Duplikat von [create tar file from stdin] (http://stackoverflow.com/q/28238945/1255289) – miken32

Antwort

1

Das -T Argument eine Liste von Dateien gibt einfügen das Archiv. Das versuchen Sie auf STDIN, nicht die eigentlichen Daten.

-T Dateiname

In x oder t-Modus, Teer wird die Liste der Namen liest aus dem Dateinamen extrahiert werden. Im c-Modus liest tar Namen, die aus dem Dateinamen archiviert werden sollen. Der spezielle Name "-C" in einer Zeile führt dazu, dass das aktuelle Verzeichnis in das in der folgenden Zeile angegebene Verzeichnis geändert wird. Namen werden durch Zeilenumbrüche beendet, sofern nicht --null angegeben ist. Beachten Sie, dass --null auch die spezielle Behandlung von Zeilen deaktiviert, die `` -C '' enthalten.

In jedem Fall you can't archive from STDIN. Sie müssen die Daten zuerst in eine Zwischendatei speichern.

grep -a -E '*abcdefg*|*123*|hi' test.txt > tempfile 
tar -czvf test.tar.gz tempfile 

Oder benutzen Sie einfach gzip allein:

grep -a -E '*abcdefg*|*123*|hi' test.txt | gzip > test.gz 
+0

danke für die Erklärung, jetzt kenne ich das Problem. – rkj

1

Sie so etwas wie dies versuchen -

grep -a -E '*abcdefg*|*123*|hi' test.txt > ff && tar -czvf test.rar.gz ff 
Verwandte Themen