我有这样的文件,其中包含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
答案 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