【问题标题】:Code for printing headers and corresponding values of tsv file打印tsv文件头和对应值的代码
【发布时间】:2021-07-29 04:19:57
【问题描述】:

我想知道如何提取与 bash 中的正则表达式匹配的值的相应标头。我有下表作为 tsv:

我想只匹配不是“-”的值并打印对应的标题,如下所示:

异烟肼(ahpC_p.Asp73His)

bash 中的简单代码是什么?

【问题讨论】:

  • 请在尝试中包含示例文本(不是图像)和预期输出

标签: bash shell awk grep


【解决方案1】:

这个awk 脚本会输出你需要的东西:

 awk 'NR == 1 { split($0, T); next }
              { for (i=1;i<=NF;i++) {
                  if ($i != "-") {
                    printf "%s (%s)\n", T[i], $i }
                  }
              }' your_file_name

只需将your_file_name 替换为您要解析的任何 TSV 文件即可。

【讨论】:

  • NR==1{split($0,t); next} 就够了
  • @karakfa,你是对的。使用 split 更优雅。我更新了上面的代码。
  • 由于某种原因,当我尝试将其用于 WDL 脚本时,它会出现此错误:Error: Invalid WDL: Failed to read task definition at line 28 column 6 (reason 1 of 1): Cannot mix leading whitespace characters in command: [" ", "\t"]
猜你喜欢
  • 2020-04-07
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-02
相关资源
最近更新 更多