Bir gzip dosyasından ilk birkaç satırı nasıl elde edebilirim? Zcat'i denedim ama bir hata veriyor
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
Bir gzip dosyasından ilk birkaç satırı nasıl elde edebilirim? Zcat'i denedim ama bir hata veriyor
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
Yanıtlar:
zcat(1)
tarafından compress(1)
veya tarafından sağlanabilir gzip(1)
. Sisteminizde, uzantıya compress(1)
sahip bir dosya arıyor gibi görünüyor .Z
.
gzip -cd
Yerine geçin zcat
ve komutunuz iyi çalışacaktır:
gzip -cd CONN.20111109.0057.gz | head
Açıklama
-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
Hala seni kırık boruyla bırakıyor. zless
gidilecek yol gibi görünüyor.
Bazı sistemlerde (örneğin, Mac) kullanmanız gerekir gzcat
.
Mac'te <
, zcat ile kullanmanız gerekir :
zcat < CONN.20111109.0057.gz|head
Eğer çizgilerin sürekli aralık olması gerekiyor, bir seçenek olabilir:
gunzip -c file.gz | sed -n '5,10p;11q' > subFile
5. ve 10. satırlar (her ikisi dahil) arasındaki satırların file.gz
yeni bir subFile
. İçin sed
seçenekler bakın manuel .
Eğer her derler, 5 satır gereklidir:
gunzip -c file.gz | sed -n '1~5p;6q' > subFile
1. satırı çıkaran ve 4 çizginin üzerinden atlayan ve 5. satırı seçen vb.
Bu awk parçacığı, yalnızca ilk birkaç satırı değil, aynı zamanda belirleyebileceğiniz bir aralığı da göstermenize izin verecektir. Ayrıca, gzip ile sıkıştırılmış bir dosyada belirli bir satıra işaret eden bir hata mesajının hatalarını ayıklamak için ihtiyacım olan satır numaralarını da ekleyecektir.
gunzip -c file.gz | awk -v from=10 -v to=20 'NR>=from { print NR,$0; if (NR>=to) exit 1}'
İşte yukarıdaki bir satırda kullanılan awk pasajı. Awk NR'de, genellikle bir satır numarasına eşdeğer olan yerleşik bir değişkendir (şimdiye kadar bulunan kayıt sayısı). from ve to değişkeni komut satırından -v seçenekleri ile alınır.
NR>=from {
print NR,$0;
if (NR>=to)
exit 1
}
tar -xzOf some_huge_file.tar.gz | head