J'ai le fichier suivant avec 4 champs. Il y a 3 groupes dans le champ 2, et le 4ème champ est constitué de 0 et de 1.Sélection des n premières lignes par groupes en utilisant AWK
Le premier champ est juste l'index.
J'aime utiliser AWK pour faire la tâche suivante
Sélectionnez les 3 premiers rangs du groupe 1 (Notez que le groupe 1 ne dispose que de 2 lignes). Le nombre de lignes est basé sur le nombre de 1 trouvées dans le 4ème champ multiplié par 3.
Sélectionnez les 6 premières rangées du groupe 2. Le nombre de rangées est basé sur le nombre de 1 trouvées dans le 4e champ 3.
Sélectionnez les 9 premiers rangs du groupe 3. le nombre de lignes est basé sur le nombre de 1 trouvé dans le 4ème fois le champ 3.
donc 17 lignes sont sélectionnées pour la sortie fichier.
Nous vous remercions de votre aide.
Input
1 1 TN1148 1
2 1 S52689 0
3 2 TA2081 1
4 2 TA2592 1
5 2 TA4011 0
6 2 TA4246 0
7 2 TA4275 0
8 2 TB0159 0
9 2 TB0392 0
10 3 TB0454 1
11 3 TB0496 1
12 3 TB1181 1
13 3 TC0027 0
14 3 TC1340 0
15 3 TC2247 0
16 3 TC3094 0
17 3 TD0106 0
18 3 TD1146 0
19 3 TD1796 0
20 3 TD3587 0
Output
1 1 TN1148 1
2 1 S52689 0
3 2 TA2081 1
4 2 TA2592 1
5 2 TA4011 0
6 2 TA4246 0
7 2 TA4275 0
8 2 TB0159 0
10 3 TB0454 1
11 3 TB0496 1
12 3 TB1181 1
13 3 TC0027 0
14 3 TC1340 0
15 3 TC2247 0
16 3 TC3094 0
17 3 TD0106 0
18 3 TD1146 0
Vous devez reformuler la question car je ne comprends pas très bien ce que vous appelez les groupes et ce que vous appelez les champs. Dans awk, les champs ont une signification très spécifique qui complique davantage le problème comme indiqué. – SiegeX
J'ai édité votre question de sorte que le format d'entrée/sortie soit lisible maintenant. Pour un nouvel avis, mettez en surbrillance votre code et appuyez sur CTRL + K ou cliquez sur l'icône '101' dans l'éditeur. – SiegeX
Le champ 2 a 3 "groupes" 1, 2 et 3. Espérons que cela clarifie. Merci SiegeX. – Tony