如何在文件中添加新列

时间:2010-10-05 10:32:03

标签: unit-testing unix awk grep

我有这样的文件,其中包含5列。但是我的文件中的某些行错误地有4列,例如在第5行和第6行的此文件中,您可以看到缺少第二列。我想用空格替换缺少的第二列,而不用使用字段分隔符“,”来打扰我文件中的其他行。

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

我需要的输出。

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

3 个答案:

答案 0 :(得分:1)

BEGIN{
    FS=","
}

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

答案 1 :(得分:1)

更短的方式

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

答案 2 :(得分:0)

使用Vim我会在Ex模式下输入以下行: :%s / ^(\ d +),(\ d +,\ d + - \ w + - \ d +,\ d)$ / \ 1 ,,, \ 2 / g