テキストファイルから1行をランダムに選択する単純な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