【问题标题】:Add file name and empty column to existing file in awk将文件名和空列添加到 awk 中的现有文件
【发布时间】:2021-03-14 17:28:27
【问题描述】:

亲爱的,我想在一个 awk 步骤中添加到我现有的文件“文件名”和“空列”,包括它们的标题:

输入:

head1 head2 head3
value1 value2 value3

输出:

filename note head1 head2 head3
file1 empty_column value1 value2 value3

所以我只是添加到标题“文件名”和“注释”。 Filename 下方是我的文件名,note 下方是空白字段。

我可以用两个 awk 命令来做到这一点并将其粘贴在一起,但是有没有办法在单行中做到这一点?

我的想法是:

awk -v OFS="\t" '{print FILENAME, $2="",$3 - end}' infile

但不知道如何添加标题以及如何打印移动的字段(表格位置 $1 到 $3)。

注意:我有大约 77 列 - 不仅仅是示例中的三个。

感谢您的任何想法。

【问题讨论】:

    标签: bash awk header


    【解决方案1】:

    试一试:

    awk '{$0=FILENAME "\t" (NR==1?"note":"") "\t" $0}7' file
    

    根据评论更新:

    awk '{$0=(NR==1? "NAME\tnote":FILENAME"\t") "\t" $0}7' file
    

    输出:

    NAME    note    head1 head2 head3
    file            value1 value2 value3
    

    【讨论】:

    • 谢谢肯特,看起来只有我需要的是第一列的名称(现在它与 FILENAME 相同)。你能解释一下你的语法吗?再次感谢您!
    • 有可能跳过列注释,只添加带有标题名称的文件名?
    • @Geroge 我不明白你的意思......你有什么问题要理解?代码非常简单。
    • 带有“note”的部分效果很好。但是 FILENAME 打印我的文件名(我想要的),但我需要在第一行“NAME”和我的文件名下。我希望很清楚 - 上面的例子解释了一切。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    相关资源
    最近更新 更多