유닉스에 .gz 파일이 있으면 특정 줄 수가 있습니다. 압축을 풀지 않고 유닉스에서 줄을 어떻게 셀 수 있습니까?
유닉스에 .gz 파일이 있으면 특정 줄 수가 있습니다. 압축을 풀지 않고 유닉스에서 줄을 어떻게 셀 수 있습니까?
답변:
파일이 여전히 압축되어 있으면 개행을 계산할 수 없습니다.
그러나 (압축 해제 된) 파일을 디스크에 쓰지 않고도 스트림으로 압축을 풀고 해당 스트림의 줄 바꿈을 계산할 수 있습니다. 그것은 다음과 같이 갈 것입니다 :
zcat file.gz | wc -l
압축 해제 및 고양이를위한 zcat, 단어 개수를위한 화장실. 더 알고 싶다면 맨 페이지를 참조하십시오.
편집하다
zcat이없는 경우 zcat은에 대한 또 다른 이름 일뿐입니다 gunzip -c
.
gzip
구별됩니다 compress
, 당신이 원하는 gzcat
.
빨리하고 싶다면 'pigz'(IIRC는 "GZip의 병렬 구현"을 나타냄)를 사용하는 것이 좋습니다. 방금 gzip으로 압축 된 파일의 줄 수를 세고 싶었던 비슷한 상황이 있었고 여기에 내 해결책이 있습니다.
for x in *.gz; do unpigz -p 8 -c $x | wc -l && echo $x; done
8 개의 프로세서를 사용하여 줄 수와 줄 수에서 계산 한 파일 수를 알려줍니다. 빨리 달렸다!
for x in *.fastq.gz; do zcat "$x" | wc -l && echo $x; done
이 명령을 사용하십시오 :
gzgrep -c $ filename.gz
이 명령 gzgrep
은 grep
gzip 압축 파일 과 동일 하지만 gzip 압축 파일에서 작동 합니다. 정규식 일치를 위해 파일을 즉시 압축 해제합니다.
이 경우 -c
, 일치하는 줄 수를 출력하도록 명령에 지시하고 정규 표현식 $
은 줄 끝과 일치하므로 모든 줄이나 파일과 일치합니다.
최종 결과는 gzip -dc filename.gz | grep -c $
입니다.
gzgrep
솔라리스가 아닌 다른 시스템에서 사용 가능?