gzip 파일에서 처음 몇 줄을 얻는 방법은 무엇입니까? 나는 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
갈 길인 것 같습니다.
경우 라인의 연속적인 범위가 될 필요가있다, 하나 개의 옵션 일 수 있습니다 :
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
첫 번째 줄을 추출하고 4 줄을 넘고 다섯 번째 줄을 선택하는 식입니다.
이 awk 스 니펫을 사용하면 처음 몇 줄뿐 아니라 지정할 수있는 범위도 표시 할 수 있습니다. 또한 gzip 파일에서 특정 줄을 가리키는 오류 메시지를 디버깅하는 데 필요한 줄 번호를 추가합니다.
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