Làm cách nào để lấy một vài dòng đầu tiên từ tệp gziped? Tôi đã thử zcat, nhưng nó báo lỗi
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
Làm cách nào để lấy một vài dòng đầu tiên từ tệp gziped? Tôi đã thử zcat, nhưng nó báo lỗi
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
Câu trả lời:
zcat(1)
có thể được cung cấp bởi một trong hai compress(1)
hoặc bởi gzip(1)
. Có vẻ như trên hệ thống của bạn compress(1)
- nó đang tìm kiếm một tệp có .Z
phần mở rộng.
Chuyển sang gzip -cd
thay thế zcat
và lệnh của bạn sẽ hoạt động tốt:
gzip -cd CONN.20111109.0057.gz | head
Giải trình
-c --stdout --to-stdout
Write output on standard output; keep original files unchanged. If there are several input files, the output consists of a sequence of independently compressed members. To obtain better compression, concatenate all input files before compressing
them.
-d --decompress --uncompress
Decompress.
zless file.gz | head
. zmore
vẫn để lại cho bạn đường ống bị hỏng. zless
dường như là một con đường để đi.
Trên một số hệ thống (ví dụ: Mac), bạn cần sử dụng gzcat
.
Trên máy Mac, bạn cần sử dụng <
với zcat:
zcat < CONN.20111109.0057.gz|head
Nếu cần một loạt các dòng liên tục , một tùy chọn có thể là:
gunzip -c file.gz | sed -n '5,10p;11q' > subFile
trong đó các dòng giữa dòng thứ 5 và thứ 10 (cả hai dòng) file.gz
đều được trích xuất thành dòng mới subFile
. Để biết sed
các tùy chọn, hãy tham khảo sách hướng dẫn .
Nếu mọi, giả sử, dòng thứ 5 là bắt buộc:
gunzip -c file.gz | sed -n '1~5p;6q' > subFile
trích dòng đầu tiên và nhảy qua 4 dòng và chọn dòng thứ 5, v.v.
Đoạn mã awk này sẽ cho phép bạn hiển thị không chỉ một vài dòng đầu tiên - mà cả một phạm vi bạn có thể chỉ định. Nó cũng sẽ thêm số dòng mà tôi cần để gỡ lỗi thông báo lỗi trỏ đến một dòng nhất định trong một tệp gzipped.
gunzip -c file.gz | awk -v from=10 -v to=20 'NR>=from { print NR,$0; if (NR>=to) exit 1}'
Đây là đoạn mã awk được sử dụng trong một lớp lót ở trên. Trong awk NR là một biến tích hợp sẵn (Số lượng bản ghi được tìm thấy cho đến nay) thường tương đương với một số dòng. biến from và to được chọn từ dòng lệnh thông qua các tùy chọn -v.
NR>=from {
print NR,$0;
if (NR>=to)
exit 1
}
tar -xzOf some_huge_file.tar.gz | head