【问题标题】:Inputing via pipe and writing input to a column in another file using awk通过管道输入并使用 awk 将输入写入另一个文件中的列
【发布时间】:2018-04-01 15:07:39
【问题描述】:

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

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

68

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

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

【问题讨论】:

标签: input awk pipe


【解决方案1】:

这个很有趣...策略是读取ARGV[1],然后在BEGIN中将其空白,以便我们之后从标准输入读取:

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

我们可能一开始可以从标准输入读取,但是我们必须在正文中缓存count.txt,然后在END中打印。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多