1
Je dispose d'un fichier avec les données ci-dessousFractionnement des fichiers basés sur un critère
.domain bag
.set bag1
bag1
abc1
.set bag2
bag2
abc2
.domain cat
.set bag1:cat
bag1:cat
abc1:cat
.set bag2:cat
bag2:cat
abc2:cat
Je veux diviser ce fichier en deux (bag1.txt et bag2.txt) en fonction de la valeur de consigne.
bag1.txt devrait ressembler à:
.domain bag
.set bag1
bag1
abc1
.domain cat
.set bag1:cat
bag1:cat
abc1:cat
bag2.txt devrait ressembler à:
.domain bag
.set bag2
bag2
abc2
.domain cat
.set bag2:cat
bag2:cat
abc2:cat
la ligne .domaine est commun pour les deux fichiers.
J'ai essayé la commande ci-dessous, mais cela ne fonctionne pas.
nawk '{if($0~/.set/){split($2,a,":");filename=a[1]".text"}if(filename=".text"){print|"tee *.text"}else{print >filename}}' file.txt
C'est ok.But peut-on généralise la part de lignes communes? S'il y a beaucoup de sacs? comme bag1 .... bag1000.how est-ce que je peux faire ceci? Le dossier réel que j'ai a beaucoup de sacs de bag1 à bag1000.instead d'impression >> bag1 pouvons-nous le faire simplement avec l'impression> *. txt (beaucoup de dossiers vides sont déjà présent dans le répertoire de bag1.txt à sac 1000.txt) – Vijay
@peter: J'ai édité la réponse pour la généraliser. C'est entièrement commenté et vous pouvez voir si cela correspond à vos besoins parce que je ne comprends pas ce que vous voulez dire avec 'print >> * .txt' – Birei