使用 vim 删除第一列

使用 vim 删除第一列

我有一个文本文件。

number 1_1 \t number1_2 \t etc
number 2_1 \t number2_2 \t etc

我想删除此文件的第一列(对应于number1_1,number2_1等,即每行第一个标签前的数字)。我读到这个帖子提出了删除第一列的解决方案(参见 Peter 的回答)。但是,由于数字大小不同,我无法重复删除第一列的操作,因此该方法对我来说不起作用。那我该怎么办?

答案1

这将删除任何行中第一个制表符之前的所有字符(包括第一个制表符):

:%s/^[^\t]*\t//

命令行cut

cut -f 2- {filename.txt} > {filenamenew.txt}

剪切默认为制表符;如果您想要其他内容(例如空格),请添加-d " ". -f来复制字段。2- 表示来自(包括)第 2 列的所有内容。

答案2

通过awk

awk -F"\t" '{print FS,$2}' file > newfile

它会剪切第一列并仅打印剩余的标签和第二列。

通过sed

sed -r 's/^([^\t]*)\t(.*)$/\t\2/g' file > newfile

答案3

:%s/[^\t]*\t//

在每一行 ( %) 中,将 ( ) 中第一次出现的“非制表符字符(, 任意数量())后跟一个制表符”替换为空。您可以输入来代替。s/ORIGINAL/REPLACEMENT/[^\t]*\tTab\t

.\{-}或者,您可以匹配以制表符结尾的最短字符序列 ( )。.*\t将匹配 的最长匹配项.*,因此它将匹配除最后一列之外的所有列;.\{-}匹配最短匹配项,即第一列。

:%s/.\{-}\t//

答案4

要删除第二列之前的剩余空间,我建议:

:%norm dfCtrl+VTabx

相关内容