Eu tenho arquivo com linhas n . (Cada linha refere-se a uma "questão" e
portanto, eles são rotulados como Q.1
, Q.2
, Q.3
, ..., Q.n
.)
Cada linha (questão) tem um atributo "Marcas",
que tem o valor 2, 3, 4, 5 ou 6.
Existem n ⁄ 5 linhas com cada valor.
Por exemplo: um arquivo de 10 linhas (ou seja, n = 10) pode parecer
amol@mypc:~$ cat questions.txt
Q.1 2 Marks
Q.2 5 Marks
Q.3 4 Marks
Q.4 3 Marks
Q.5 6 Marks
Q.6 4 Marks
Q.7 3 Marks
Q.8 2 Marks
Q.9 6 Marks
Q.10 5 Marks
Eu sei que posso dividir isso em cinco arquivos homogêneos (ou seja, todos iguais)
com algo como
amol@mypc:~$ grep " 2 Marks" questions.txt > questions2Marks.txt
amol@mypc:~$ grep " 3 Marks" questions.txt > questions3Marks.txt
amol@mypc:~$ grep " 4 Marks" questions.txt > questions4Marks.txt
amol@mypc:~$ grep " 5 Marks" questions.txt > questions5Marks.txt
amol@mypc:~$ grep " 6 Marks" questions.txt > questions6Marks.txt
Cada um dos arquivos resultantes terá n ⁄ 5 linhas.
Eu quero fazer a operação inversa -
isto é, produzir uma transposição do resultado acima.
Quero dividir meu arquivo questions.txt
em arquivos n ⁄ 5 : questions1.txt
,
questions2.txt
, questions3.txt
, ..., questionsM.txt
(usando M para representar n 5 ) onde cada arquivo
tem cinco linhas de comprimento e é heterogêneo (isto é, todas diferentes).
questions1.txt
deve conter
- a primeira linha em
questions.txt
com 2 Marks
,
- a primeira linha em
questions.txt
com 3 Marks
,
- a primeira linha em
questions.txt
com 4 Marks
,
- a primeira linha em
questions.txt
com 5 Marks
e
- a primeira linha em
questions.txt
com 6 Marks
,
nessa ordem. questions2.txt
deve conter a segunda linha de cada, etc.
Então, para n = 10, M obviamente é 2. Eu gostaria que meu exemplo questions.txt
acima fosse dividido nesses dois arquivos:
amol@mypc:~$ cat questions1.txt
Q.1 2 Marks
Q.4 3 Marks
Q.3 4 Marks
Q.2 5 Marks
Q.5 6 Marks
amol@mypc:~$ cat questions2.txt
Q.8 2 Marks
Q.7 3 Marks
Q.6 4 Marks
Q.10 5 Marks
Q.9 6 Marks
Como posso conseguir isso usando as ferramentas * nix?
(sed, awk, perl, script de shell, etc ...)?