【发布时间】:2019-10-11 20:25:35
【问题描述】:
我想从作为 bash 输出的文本表中删除特定列。这是示例数据:
Column_1 Column_2 Column_3
15 20 40
10 30 50
... ... ...
5 10 20
假设我想删除整个第二列以获得类似的内容:
Column_1 Column_3
15 40
10 50
... ...
5 20
我尝试使用 AWK 来执行此操作,方法是指定我要打印列 $1 和 $3:
awk '{print $1 $3}'
但在一般情况下,当列数仅为 N 时,它不起作用。
如何在 bash 中做到这一点?
【问题讨论】:
-
亲爱的 Wojciech,欢迎来到 Stack Overflow。虽然我将您的问题标记为重复,但这并不意味着您提出了一个错误的问题。您的问题写得非常好,简洁,包含您尝试过的示例数据和示例代码。不幸的是,这是一个非常常见的问题。因此,标记为重复。
-
如果列是制表符分隔的,可能是
cut -f1,3 foo.tsv -
@Shawn,像 cut -f2 --complement foo.tsv 一样容易,尤其是在有很多列的情况下。
-
@user2138595 我实际上把它先放了然后改了,因为 afaik
--complement不是 posix。