Vì vậy, tôi có một tập tin lớn như thế này ...
1/20/2016,somerandomdata
1/20/2016,somerandomdata
1/20/2016,somerandomdata
1/20/2016,somerandomdata
1/21/2016,somerandomdata
1/21/2016,somerandomdata
1/21/2016,somerandomdata
1/21/2016,somerandomdata
1/22/2016,somerandomdata
1/22/2016,somerandomdata
1/22/2016,somerandomdata
1/22/2016,somerandomdata
Và tôi muốn chia nó thành một loạt các tệp nhỏ hơn dựa trên cột đầu tiên. Dễ dàng: sử dụng awk như thế này:
awk -F '[,/]' '{print > filename$1$2$3".dat"}'
Đây là cách bắt: Tôi muốn các tệp đầu ra được nén. Vì vậy, tôi có thể tiếp tục và làm điều này sau khi thực tế ...
find . -name "filename*.dat" | xargs -l xz
Vấn đề với điều đó là tôi muốn xz nằm trong đường ống thay vì sau khi dữ liệu được chia. Một cái gì đó như thế này:
curl "url" | grep "blah" | xz -c > filename.dat.xz
Tất nhiên, điều này không thực sự phân chia tập tin.
Lý do tôi muốn nó trong đường ống là vì tôi đang tải xuống dữ liệu và muốn chạy nén cùng lúc với tải xuống thay vì sau đó. (Tôi khá chắc chắn rằng điều này sẽ khiến mọi thứ diễn ra nhanh hơn, nhưng nếu tôi sai, hãy sửa lại cho tôi)
Vì vậy, mục tiêu của tôi là một cái gì đó như ....
curl "url" | grep "blah" | awk -F '[,/]' '{print > filename$1$2$3".dat"}' | xz -c > filename.dat.xz
Nhưng không, bởi vì điều đó rõ ràng sẽ không hoạt động
Nếu bạn có một giải pháp tốt hơn cho vấn đề của tôi hoặc nếu bạn nghĩ rằng tôi đang làm điều gì đó hoàn toàn ngu ngốc, thì tôi linh hoạt.