2017-03-07 73 views
-1

我知道我在這裏做一些愚蠢的事情,但無法實現這個工作。grep輸出到TAR

我需要到grep一個文件&創建一個TAR文件指出,grep的輸出

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

命令提示以下錯誤:未能

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不存在可能。嘗試使用有效的文件名。 –

+0

@ afr0ck test.txt確實存在,我可以在錯誤消息(現在更新上面)中看到grep輸出 – rkj

+1

[從標準輸入創建tar文件]的可能重複(http://stackoverflow.com/q/28238945/1255289 ) – miken32

回答

1

-T參數指定的文件放進名單的檔案。這就是你想要在STDIN上提供的,而不是實際的數據。

-T文件名

在x或t模式中,焦油將讀取從文件名提取名稱的列表。在c模式下,tar將從文件名中讀取要歸檔的名稱。單獨一行中的特殊名稱「-C」將導致當前目錄更改爲下一行中指定的目錄。名稱由換行符終止,除非指定--null。請注意,--null也會禁用包含「-C」的行的特殊處理。

無論如何,you can't archive from STDIN。您需要首先將數據放入中間文件。

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

或者,只是使用gzip獨自:

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

感謝您的解釋,現在我知道這個問題。 – rkj

1

你可以嘗試這樣的事情 -

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