【问题标题】:concatenate a variable and string (awk, macos version)连接变量和字符串(awk,macos 版本)
【发布时间】:2021-08-31 21:00:37
【问题描述】:

我可以使用以下命令根据第一列中的染色体数将一个 BED 文件拆分为多个 BED 文件。

awk -F"\t" '{print >  $1}' sample.BED

如果我想将每个文件的文件扩展名添加为“.bed”,就像在 $1“.bed”中一样,它会给我语法错误。我该如何解决?

awk -F"\t" '{print >  $1".bed"}' sample.BED 

【问题讨论】:

  • 使用:awk -F"\t" '{print > ($1".bed")}' sample.BED
  • 谢谢。我知道这将是一个简单的解决方案 :)
  • @anubhava 这很简短,但却是一个完整的答案,因此值得发布。为什么只作为评论发布?
  • @anubhava 哦,我明白了。我没有注意到它关闭的速度那么快。 :)
  • 这是一个拼写错误,因为在输出(或输入)重定向右侧有一个表达式所需的语法是print>($1".bed"),而这不是您输入的内容。您输入的 print>$1".bed" 是未定义的行为。

标签: awk


【解决方案1】:

正如@anubhava 在评论部分所说,您只需添加括号即可使其工作:

awk -F"\t" '{print > ($1".bed")}' sample.BED

重要的是要记住,不带参数的print 默认为print $0,而> 重定向只允许一个参数,因此需要括号。

我将答案发布为社区 Wiki,但没有赢得任何声誉。阅读更多here

【讨论】:

    猜你喜欢
    • 2019-01-08
    • 2016-11-15
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多