我有数以千计的列和行的数据文件。 我想删除实际上是行计数器的第一列。 我在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
这将输出除第一个以外的所有列。