ファイルをランダムにサブセット化し、複数のファイルから同じ行番号を選択する方法

ファイルをランダムにサブセット化し、複数のファイルから同じ行番号を選択する方法

3494行を含むファイルがあり、そのうち100をランダムに選択してその行を新しいファイルに書きたいと思います。私はこれを使ってそれを行うことができます:

shuf -n 100 input_file.txt output_file.txt

しかし、そのような入力ファイルが多いので、各ファイルで同じ100行を選択したいと思います。つまり、最初のファイル選択の行インデックスを維持し、shuf他のファイルでも同じ行を選択する必要があります。どうすればいいですか?

編集する:

最初の答えは役に立ちましたが、それでも正しいファイルから選択することはできません。同じ100行を選択したいファイルが10個あります。結局、1100行ができました。

ベストアンサー1

まず、3494で100個の乱数を抽出してから、各ファイルから対応する行番号を抽出できます。

seq 3494 | shuf -n 100 | awk 'NR==FNR{ z[$0]++;next}
{if (FNR in z){ print >FILENAME"_random"}}' - ./*.txt

これにより、各ファイルから同じ行番号が抽出され、次の場所に保存されます。FILENAME"_random"

おすすめ記事