จะรับสองสามบรรทัดแรกจากไฟล์ gziped ได้อย่างไร ฉันลอง zcat แต่มันเกิดข้อผิดพลาด
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
จะรับสองสามบรรทัดแรกจากไฟล์ gziped ได้อย่างไร ฉันลอง zcat แต่มันเกิดข้อผิดพลาด
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
คำตอบ:
zcat(1)
สามารถจัดจำหน่ายโดยทั้งหรือโดยการcompress(1)
gzip(1)
ในระบบของคุณดูเหมือนว่าจะเป็นcompress(1)
- กำลังมองหาไฟล์ที่มี.Z
นามสกุล
เปลี่ยนไปใช้gzip -cd
แทนzcat
และคำสั่งของคุณควรทำงานได้ดี:
gzip -cd CONN.20111109.0057.gz | head
คำอธิบาย
-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
ยังคงทำให้คุณท่อแตก zless
ดูเหมือนจะเป็นหนทางที่จะไป
ในบางระบบ (เช่น Mac) gzcat
คุณจะต้องใช้
บน Mac คุณต้องใช้<
กับ zcat:
zcat < CONN.20111109.0057.gz|head
หากต้องการช่วงของบรรทัดต่อเนื่องอาจมีทางเลือกหนึ่งดังนี้:
gunzip -c file.gz | sed -n '5,10p;11q' > subFile
ที่เส้นแบ่งระหว่างวันที่ 5 และ 10 เส้น (ทั้งรวม) ของจะถูกดึงเข้าใหม่file.gz
subFile
สำหรับsed
ตัวเลือกโปรดดูคู่มือการใช้งาน
ถ้าทุกคนบอกว่าต้องมีบรรทัดที่ 5 :
gunzip -c file.gz | sed -n '1~5p;6q' > subFile
ซึ่งแยกบรรทัดที่ 1 และกระโดดข้าม 4 บรรทัดและเลือกบรรทัดที่ 5 และอื่น ๆ
ตัวอย่างข้อมูล awk นี้จะช่วยให้คุณไม่แสดงเพียงสองสามบรรทัดแรกเท่านั้น แต่ยังเป็นช่วงที่คุณระบุได้ด้วย นอกจากนี้ยังจะเพิ่มหมายเลขบรรทัดที่ฉันต้องการสำหรับการดีบักข้อความแสดงข้อผิดพลาดที่ชี้ไปยังบรรทัดที่ต้องการลงในไฟล์ gzipped
gunzip -c file.gz | awk -v from=10 -v to=20 'NR>=from { print NR,$0; if (NR>=to) exit 1}'
นี่คือตัวอย่าง awk ที่ใช้ในหนึ่งซับด้านบน ใน awk NR เป็นตัวแปรในตัว (จำนวนระเบียนที่พบจนถึงปัจจุบัน) ซึ่งโดยปกติจะเทียบเท่ากับหมายเลขบรรทัด ตัวแปร from และ to จะถูกเลือกจากบรรทัดคำสั่งผ่านตัวเลือก -v
NR>=from {
print NR,$0;
if (NR>=to)
exit 1
}
tar -xzOf some_huge_file.tar.gz | head