如何替换制表符分隔文件的第一列

时间:2016-03-28 18:01:28

标签: vim

690070  690070  A
690451  690451  B
690571  690571  C
690578  690578  D
690637  690637  F

如何使用序列号替换第一列值,从1 ... n开始。所以它变成了:

1  690070  A
2  690451  B
3  690571  C
4  690578  D
5  690637  F

可以在Vim或某些linux命令中完成吗?

2 个答案:

答案 0 :(得分:3)

您可以使用awk或vim宏。 awk 非常适合此类文字操作

awk '{count++; print count " " $2 " "$3;}'  data.stat > /tmp/data.stat && mv /tmp/data.stat data.stat

答案 1 :(得分:1)

在Vim中:

:let i=1 | g/^[^/\t]*\t/s//\= i. "\t"/ | let i=i+1

Reference

<强>更新

要拆分前两列并保存到另一个文件,

我建议在Tomᚊíma的回答中使用awk,具体为:
awk '{print $1 "\t" $2;}' data.stat > newfilename.txt

如果你想在Vim中做所有事情:

  • 将当前文件复制到新文件

:w newfilename.txt

  • 打开新复制的文件:

:o newfilename.txt

  • 拆分该行其余部分的前两列:

:%s/^\([^\t]*\)\t\([^\t]*\).*$/\1\t\2/g

  • 保存您的编辑

:w newfilename.txt