output.txt 但我的输出没有任何-6ren">
gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:22:30 28 4
gpt4 key购买 nike

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

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

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

这是我的输入文件的样子:

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 的惯用用法是

cut -f2- input > output

如果您的分隔符是制表符 ("\t")。

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

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

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

已更新

根据您更新的输入,问题是 cut 视为多列的初始空间。一种解决方法是在喂食之前先将它们移除

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

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

关于linux - 如何从 Linux 中的数据文件中删除第一列(实际上是行名称)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32812916/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com