zcat/gz 또는 대안을 사용하여 압축된 텍스트 파일에서 임의의 줄을 선택하세요.

zcat/gz 또는 대안을 사용하여 압축된 텍스트 파일에서 임의의 줄을 선택하세요.

텍스트 파일에서 한 줄을 무작위로 선택하는 간단한 bash 스크립트가 있습니다. 이는 원래 를 사용하여 수행되었습니다 shuf file.txt | head -1( 를 사용하여 동일한 결과를 얻을 수 있음 cat file.txt | shuf | head -1). 또한 변수( a=$(shuf file.txt | head -1))에 임의의 행을 할당합니다.

저장 공간을 절약하기 위해 텍스트 파일( )을 압축 하고 와 같이 gzip file.txt사용해 보았지만 이로 인해 bash는 file.txt.gz의 모든 줄을 실행하려고 했습니다(예 : ).zcatzcat file.txt.gz | shuf | head -1file.txt: line 1589: examplestring: command not found

bash의 gzip 압축 텍스트 파일에서 임의의 줄을 선택하는 방법은 무엇입니까? 나는 대체 압축 방법을 사용하는 것에 반대하지 않습니다.

편집하다:내 초기 방법( a=$(zcat file.txt.gz | shuf | head -1))은 예상대로 작동합니다. 오타를 간과한 것이 틀림없어 재현할 수 없는 것 같습니다. @gogoud가 제안한 접근 방식이 더 기분이 좋습니다.

답변1

이것은 bash 5.0.17(1)에서 작동합니다.

zcat file.txt.gz | shuf -n1

관련 정보