【问题标题】:Can you print to a specific column in awk?您可以打印到 awk 中的特定列吗?
【发布时间】:2016-03-05 01:42:12
【问题描述】:

我已经开始在 awk 中进行文件比较。有没有办法将数据打印到特定列?我正在使用的书在印刷部分没有涉及到这一点,我似乎无法找到我正在寻找的确切内容。

假设我想打印一行,但还要在特定的空白列 [$12] 内打印一个字符串(“test”)。我可以这样做吗?感谢您的帮助

{print $0, "test"[$12]}

【问题讨论】:

  • 除非您正在阅读 Arnold Robbins 的《Effective Awk Programming, 4th Edition》一书,否则请扔掉那本书。如果您正在阅读正确的书,那么它确实会告诉您您想知道的内容。

标签: awk


【解决方案1】:

您可以轻松覆盖现有字段

$ awk '... {$12="test"; print}' file

如果您有代码和示例输入输出,人们可以提出更好的方法,因为通常您要求的并不是您真正需要的。

例如

$ echo 'a,b,c, ,e' | awk -F, -v OFS=, '{$4="test"; print}'

a,b,c,test,e

awk 如果添加到比您当前拥有的索引更高的索引,也会扩展(添加缺失的字段)

$ echo 'a,b,c, ,e' | awk -F, -v OFS=, '{$12="test"; print}'

a,b,c, ,e,,,,,,,test

你也可以用1代替print来缩短代码,比如

... '{$4="test"}1'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    相关资源
    最近更新 更多