Comment diviser un fichier sur un modèle particulier sous UNIX

J’ai un besoin de diviser un fichier en un trait de soulignement et le résultat doit être groupé.

Par exemple,

Mon fichier contient,

ADD1_5001AB ADD1_5002AB ADD1_5003BC ADD2_5100XY ADD2_5101YZ CANC1_5200AB CANC1_5201BC CANC2_5301GH CANC2_5302FG 

donc mon résultat devrait avoir 4 fichiers, le 1er fichier devrait contenir,

 ADD1_5001AB ADD1_5002AB ADD1_5003BC 

2ème dossier devrait contenir,

 ADD2_5100XY ADD2_5101YZ 

3ème fichier devrait contenir,

 CANC1_5200AB CANC1_5201BC 

Le 4ème fichier doit contenir,

 CANC2_5301GH CANC2_5302FG 

Aide aimablement.

Merci.

Awk est une bonne solution pour cela:

 awk -F"_" '{print $0 > $1}' infile.txt 

Cela se divisera par un trait de soulignement ( -F"_" ) et imprimera chaque ligne ( print $0 ) dans un fichier nommé d’après le bit précédant le trait de soulignement ( > $1 ).