Linux에서 파이프하는 동안 대용량 텍스트 파일을 효율적으로 섞는 방법은 무엇입니까?

Linux에서 파이프하는 동안 대용량 텍스트 파일을 효율적으로 섞는 방법은 무엇입니까?

몇 GB 크기의 텍스트 파일이 있습니다. 이 텍스트 파일을 파이프로 섞으려고 합니다.

예를 들어 이것은 내가 사용하고 있는 몇 가지 샘플 라인이지만 효율적이지 않으며 실제로 전체 파일을 읽을 때까지 파이프가 시작되지 않는 것 같습니다. 어쩌면 내가 틀렸을 수도 있습니다.

shuf HUGETEXTFILE.txt|some command

cat HUGETEXTFILE.txt|sort -R |some command

나도 써보려고 했는데

split -n 1/numberofchunks HUGETEXTFILE.txt|sort -R|some command 

그러나 첫 번째 청크가 완료되면 배관이 종료됩니다.

새로운 방식의 셔플링이나 무작위 배포가 필요할 때마다 수백 개의 파일을 작성하고 싶지 않기 때문에 텍스트 파일을 파이프로 셔플링하는 효율적인 방법을 찾으려고 합니다.

감사해요

답변1

다음 접근 방식을 시도해 볼 수 있습니다.

cat bigfile.txt|
  while IFS= read -r line; do
    echo '%s\n' "$line" |shuf |sort -n| grep "sample";
  done

IFS는 여기서 출력을 라인으로 분할하는 데 사용됩니다.

관련 정보