2010-10-05 4 views
1

J'ai un fichier comme celui-ci qui contient 5 colonnes. Mais certaines lignes dans mon fichier ont 4 colonnes par erreur, par exemple dans ce fichier sur les 5ème et 6ème lignes, vous pouvez voir que la deuxième colonne est manquante. Je veux remplacer la 2ème colonne manquante par un espace vide sans déranger les autres lignes de mon fichier avec le séparateur de champs ",".Comment ajouter une nouvelle colonne dans un fichier

 
11111,5323,6296,29-May-2010,1 
22222,5323,6296,24-May-2010,1 
33333,5323,6296,24-Jun-2010,1 
44444,5323,6296,24-Jun-2010,1 
55555,8061,15-Jul-2010,1 
66666,6296,29-May-2010,1 
77777,5323,6296,29-May-2010,1 
88888,6296,29-May-2010,1 
99999,6296,27-May-2010,1 
10101,5323,6296,29-May-2010,1 

Sortie dont j'ai besoin.

 
11111,5323,6296,29-May-2010,1 
22222,5323,6296,24-May-2010,1 
33333,5323,6296,24-Jun-2010,1 
44444,5323,6296,24-Jun-2010,1 
55555,,8061,15-Jul-2010,1 
66666,,6296,29-May-2010,1 
77777,5323,6296,29-May-2010,1 
88888,,6296,29-May-2010,1 
99999,,6296,27-May-2010,1 
10101,5323,6296,29-May-2010,1 

Répondre

1
BEGIN{ 
    FS="," 
} 

NF==5 { print; } 
NF==4 { printf("%s,,%s,%s,%s\n", $1, $2, $3, $4); } 
+0

Merci Benoit .. il fonctionne très bien .. – gyrous

0

En utilisant Vim j'entrer dans la ligne suivante dans Ex-Mode: :% s/^ (\ d +), (\ d +, \ d + - \ w + - \ d +, \ d) $/\ 1, \ 2/g

+0

pourrait être une bonne solution, à condition que toutes les lignes suivent ce format. Mais vous devez spécifier \ v (verymagic) pour que la magie opère (parce que les parenthèses et + devraient sinon être échappées) – Benoit

+0

Ah, c'est vrai - je vois. –

1

plus court chemin

awk -F"," 'NF<5{sub(",",",,")}1' file 
+0

Le '-F", "' est inutile. –

+2

@Dennis: Il est nécessaire pour le calcul de 'NF'. – schot

Questions connexes