使用awk通过管道输入并将输入写入另一个文件中的列

时间:2018-04-01 15:07:40

标签: input awk pipe

我想使用wc -l计算文件的行数,并使用awk将此数字写入文件(在特定列中)。

wc -l list | awk 'print $1'给了我输出

68

我想将此68写入另一个文件中的第3列。(count.txt)

如何通过awk完成? (或者有更好的选择吗?)

1 个答案:

答案 0 :(得分:0)

这个很有趣......策略是阅读ARGV[1]然后在BEGIN中将其删空,以便我们之后从stdin读取:

wc -l < list | awk '
    BEGIN {
        out = ARGV[1]
        getline < out
        line = $0
        close(out)
        ARGV[1] = ""
    }
    {
        wc = $0
        $0 = line
        $3 = wc
        print > out
    }
    ' count.txt

我们可能在开头读取stdin,但之后我们必须将count.txt缓存在正文中,然后在END中打印。