J'ai un énorme fichier texte qui ressemble à ceci:
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,3
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,8
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,14
36,53,15596,0.58454577855,0.26119,2.24878677855,0.116147072052964,12
La sortie souhaitée est la suivante:
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,MI-03
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,MI-08
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,MI-14
36,53,15596,0.58454577855,0.26119,2.24878677855,0.116147072052964,MI-12
J'ai essayé d'autres publications pertinentes ici et sur d'autres communautés, mais je n'ai pas pu obtenir exactement ce que je veux.
MISE À JOUR
C'est la question croisée (je voulais des réponses Unix / perl et des solutions batch / powershell pour cela.) Qui a des réponses intéressantes.
"1 2 3 4" | awk '{$2=$2;print $0}'
donne:1 2 3 4
(il ne reste qu'un espace (ou OFS) entre les champs). ex2)echo "1,,,2,3,,,,4" | awk -F',' '{$2=$2;print $0}'
donne:1 2 3 4
(les virgules sont devenues des espaces). Il pourrait y avoir d'autres effets secondaires. Testez et adoptez une autre approche (gsub sur une variable de copie de $ 0, par exemple) si l'attribution d'un champ a des effets secondaires néfastes.