【问题标题】:How to delete whole column from bash output containing table [duplicate]如何从包含表的bash输出中删除整列[重复]
【发布时间】: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。虽然我将您的问题标记为重复,但这并不意味着您提出了一个错误的问题。您的问题写得非常好,简洁,包含您尝试过的示例数据和示例代码。不幸的是,这是一个非常常见的问题。因此,标记为重复。
  • 相关:thisthisthisthisthisthis,...
  • 如果列是制表符分隔的,可能是cut -f1,3 foo.tsv
  • @Shawn,像 cut -f2 --complement foo.tsv 一样容易,尤其是在有很多列的情况下。
  • @user2138595 我实际上把它先放了然后改了,因为 afaik --complement 不是 posix。

标签: bash awk sed grep


【解决方案1】:

只需清除不需要的列即可。

awk '{$2 = ""; print}'

【讨论】:

  • 可能通过管道传送到column -t 以保持表格格式。
  • @user3439894 没有办法使用OFS 使所有列对齐,而column -t 可以做到。
猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 2018-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多