【问题标题】:Can awk accept two arguments?awk 可以接受两个参数吗?
【发布时间】:2013-02-27 18:37:39
【问题描述】:

我是新手,有点不知所措,所以如果我的标题离题,请纠正我。我正在尝试从一个文件在 awk 中设置一个变量,然后在另一个文件上调用该脚本。

例如:

  • sqlinsert 写入 fields.txt

我执行:

cat 文本文件 | ./awkscript

awkscript 在文本文件上运行时从 fields.txt 中提取 'fields' var

这就是我所拥有的。我正在使用 getline,这不是我想要的。我希望它从单独文件的第一行中获取值。

\#!/opt/local/bin/gawk -f

BEGIN { 
    printf "Enter field lengths: "
    getline fields < "-"
        print fields
}       

BEGIN {FIELDWIDTHS = fields; OFS="|"}
{
        {       for (i=1;i<=NF;i++) sub(/[ \t]*$/,"",$i)        }

\#       {       for (i=1;i<=NF;i++) sub(/^[ \t]*/,"",$i)        }

        print
}

【问题讨论】:

  • 请考虑在您的问题中添加一些示例输入、预期输出、当前输出,否则我们将与您一起玩 20 个问题;-) 另外,我在您的代码中没有看到您正在使用 field.txt。祝你好运。
  • 我不知道如何使用field.txt,这就是问题所在。我想要做的就是将 fields 变量设置为“10 5 7 8 18 7 6”或在 fields.txt 的第一行找到的任何值

标签: awk


【解决方案1】:

我要找的是这个:

cat 文本文件 | generic.awk -v fields='10 1 21 21 4'

-v 选项也可以多次使用: 猫文本文件 | generic.awk -v field1="10" -v field2="1" -v field3="21" -v field4="21" -v field5="4"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多