如何在文件中添加新列
我有这样的文件,其中包含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
BEGIN{
FS=","
}
NF==5 { print; }
NF==4 { printf("%s,,%s,%s,%s\n", $1, $2, $3, $4); }
使用Vim我进入在实施例模式以下行: :%S/^(\ d +),(\ d +,\ d + - \ W + - \ d +,\ d )$/\ 1 \ 2/g的
可能是一个很好的解决方案,提供所有行按照这个格式。但是你必须指定\ v(verymagic)来使魔法运作(因为圆括号和+应该以其他方式逃脱) – Benoit 2010-10-05 10:52:02
啊,对 - 我明白了。 – 2010-10-05 10:59:58
较短方式
awk -F"," 'NF<5{sub(",",",,")}1' file
“-F”,“'是不必要的。 – 2010-10-05 14:38:32
@丹尼斯:它是计算'NF'所必需的。 – schot 2010-10-05 14:46:06
感谢伯努瓦..它的伟大工程.. – gyrous 2010-10-05 10:48:53