如何从Linux中的数据文件中删除第一列(实际上是行名称)?

我有数以千计的列和行的数据文件。 我想删除实际上是行计数器的第一列。 我在linux中使用这个命令:

cut -d " " -f 2- input.txt > output.txt 

但是我的输出没有任何改变。 有谁知道为什么它不起作用,我该怎么办?

这是我的input文件的样子:

 col1 col2 col3 col4 ... 1 0 0 0 1 2 0 1 0 1 3 0 1 0 0 4 0 0 0 0 5 0 1 1 1 6 1 1 1 0 7 1 0 0 0 8 0 0 0 0 9 1 0 0 0 10 1 1 1 1 11 0 0 0 1 . . . 

我想我的输出如下所示:

 col1 col2 col3 col4 ... 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 1 . . . 

我也试过了sed命令:

  sed '1d' input.file > output.file 

但它删除第一行而不是第一列。

有人可以指导我吗?

习惯性地使用切割

 cut -f2- input > output 

如果你的分隔符是tab(“\ t”)。

或者,简单地用awk魔法(将空间和制表符分隔符)

  awk '{$1=""}1' input | awk '{$1=$1}1' > output 

第一个awk将删除字段1,但留下一个分隔符,第二个awk删除分隔符。 默认的输出分隔符将是空格,如果你想改变为制表符,在第二个awk中加-vOFS="\t"

更新

根据您的更新的输入问题是最初的空间切成多列。 解决的一个办法是在喂食之前先将其取出

 sed 's/^ *//' input | cut -d" " -f2- > output 

或者使用上面的awk替代方法,在这种情况下也可以工作。

你可以用--complement选项使用cut命令:

 cut -f1 -d" " --complement input.file > output.file 

这将输出除第一个以外的所有列。