【问题标题】:Pipe Command Output into Awk管道命令输出到 awk
【发布时间】:2020-01-14 00:35:53
【问题描述】:

我想将命令的输出通过管道传输到 awk。我想将该数字添加到现有 .txt 文件中新列的每一行。新列应该在最后,不一定是第 2 列。

$command 1

4512438

$ input.txt

A
B
C
D

$desired_ouput.txt

A   4512438
B   4512438
C   4512438
D   4512438

我认为我需要按照以下方式做一些事情。我不确定如何指定管道进入新列 - 这个 awk 命令只会将整数添加到列中。

$ 命令1 | awk -F, '{$(NF+1)=++i;}1' OFS=, input.txt > desired_ouput.txt

【问题讨论】:

    标签: awk pipe cat


    【解决方案1】:

    您似乎并不想将值通过管道传递给 awk。相反,您希望将其作为参数传递。您可以使用以下内容从管道中读取它:

    cmd1 | awk 'NR==FNR{a=$0} NR!=FNR{print $0,a}' - input.txt
    

    但这样做似乎更自然:

    awk '{print $0,a}' a="$(cmd1)" input.txt
    

    【讨论】:

    • 太棒了 - 这很有效!您的第二个选项有效,这让您有些惊讶。为了将来参考,这是否也适用于不在 bash 中的命令?例如,如果我需要使用 sh script.sh 调用脚本?
    • 您的意思是cmd1 是否类似于sh script.sh?是的,它会为此工作。
    猜你喜欢
    • 2013-10-23
    • 1970-01-01
    • 2019-11-08
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 2014-02-04
    相关资源
    最近更新 更多