我有一个数据文件如下。删除每行的第一个字符,并使用Vim追加
1,14.23,1.71,2.43,15.6,127,2.8,3.06,.28,2.29,5.64,1.04,3.92,1065
1,13.2,1.78,2.14,11.2,100,2.65,2.76,.26,1.28,4.38,1.05,3.4,1050
1,13.16,2.36,2.67,18.6,101,2.8,3.24,.3,2.81,5.68,1.03,3.17,1185
1,14.37,1.95,2.5,16.8,113,3.85,3.49,.24,2.18,7.8,.86,3.45,1480
1,13.24,2.59,2.87,21,118,2.8,2.69,.39,1.82,4.32,1.04,2.93,735
使用vim,我想从每一行中取出1并将它们追加到最后。由此产生的文件将如下所示:
14.23,1.71,2.43,15.6,127,2.8,3.06,.28,2.29,5.64,1.04,3.92,1065,1
13.2,1.78,2.14,11.2,100,2.65,2.76,.26,1.28,4.38,1.05,3.4,1050,1
13.16,2.36,2.67,18.6,101,2.8,3.24,.3,2.81,5.68,1.03,3.17,1185,1
14.37,1.95,2.5,16.8,113,3.85,3.49,.24,2.18,7.8,.86,3.45,1480,1
13.24,2.59,2.87,21,118,2.8,2.69,.39,1.82,4.32,1.04,2.93,735,1
我正在寻找一个优雅的方式来做到这一点。
其实我试过像
:%s/$/,/g
然后
:%s/$/^./g
但我不能使它工作。
编辑:呃,其实我在我的问题中犯了一个错误。在数据文件中,第一个字符是不总是1,他们是1,2和3的混合物所以,从这个问题,所有的答案,我想出了一个解决方案 -
:%s/^\([1-3]\),\(.*\)/\2,\1/g
和它正在工作。
':%s/^ 1,\(。* \)/ \ 1,1' – Kevin 2013-04-22 04:33:08
替换s/$ /,/ g表示将行标记的末尾替换为0宽度,逗号。替换s /&/^./并没有什么意义:你要求用行首标记后面跟一个点来代替行尾标记。开始的行标记永远不会在行的末尾,所以vim决定你必须是一个文字'^'。 – 7stud 2013-04-22 04:46:04
@ 7stud,感谢您的评论,它帮助。 – ramgorur 2013-04-22 05:19:24