텍스트 파일에서 한 줄을 무작위로 선택하는 간단한 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의 모든 줄을 실행하려고 했습니다(예 : ).zcat
zcat file.txt.gz | shuf | head -1
file.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