Перестановка пар строк в двух текстовых файлах - PullRequest
1 голос
/ 13 мая 2019

Я работаю над проектом машинного перевода, в котором у меня 4,5 миллиона строк текста на двух языках: Английский и Немецкий .Я хотел бы перемешать эти строки перед разделением данных на фрагменты, на которых я буду тренировать свою модель.Я знаю, что команда shuf, описанная здесь , позволяет перетасовывать строки в одном файле, но как я могу гарантировать, что соответствующие строки во втором файле также перетасовываются в том же порядке?Есть ли команда для перемешивания строк в обоих файлах?

1 Ответ

1 голос
/ 13 мая 2019

TL; DR

  • paste для создания отдельных столбцов из двух файлов в одном файле
  • shuf в одном файле
  • cut разделить столбцы

Вставить

$ cat test.en 
a b c
d e f
g h i

$ cat test.de 
1 2 3
4 5 6
7 8 9

$ paste test.en test.de > test.en-de

$ cat test.en-de
a b c   1 2 3
d e f   4 5 6
g h i   7 8 9

Перемешать

$ shuf test.en-de > test.en-de.shuf

$ cat test.en-de.shuf
d e f   4 5 6
a b c   1 2 3
g h i   7 8 9

Вырезать

$ cut -f1 test.en-de.shuf> test.en-de.shuf.en
$ cut -f2 test.en-de.shuf> test.en-de.shuf.de

$ cat test.en-de.shuf.en 
d e f
a b c
g h i

$ cat test.en-de.shuf.de
4 5 6
1 2 3
7 8 9
...