Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将awk放入函数中_Bash_Shell_Awk - Fatal编程技术网

Bash 将awk放入函数中

Bash 将awk放入函数中,bash,shell,awk,Bash,Shell,Awk,我有4个AWK非常相似,所以我想把它们放在一个函数中。我的awk代码是 awk -v MYPATH="$MYPATH" -v FILE_EXT="$FILE_EXT" -v NAME_OF_FILE="$NAME_OF_FILE" -v DATE="$DATE" -v pattern="$STORED_PROCS_BEGIN" ' $0 ~ pattern { rec = $1 OFS $2 OFS $4 OFS $7 for (i

我有4个AWK非常相似,所以我想把它们放在一个函数中。我的awk代码是

awk -v MYPATH="$MYPATH" -v FILE_EXT="$FILE_EXT" -v NAME_OF_FILE="$NAME_OF_FILE" -v DATE="$DATE" -v pattern="$STORED_PROCS_BEGIN" '
        $0 ~ pattern {
            rec = $1 OFS $2 OFS $4 OFS $7
            for (i=9; i<=NF; i++) {
                rec = rec OFS $i
                if ($i ~ /\([01]\)/) {
                    break
                }
            }
            print rec >> "'$MYPATH''$NAME_OF_FILE''$DATE'.'$FILE_EXT'"
        }
    ' "$FILE_LOCATION"
然后用printFmt集调用

    }

不确定问题出在哪里,因为您的代码中已经有了您需要做的事情,但这可能会有助于简化代码:

$ cat tst.sh
function prtStuff() {
    awk -v x="$1" 'BEGIN{ print x }'
}

prtStuff "foo"
prtStuff "---"
prtStuff "bar"

$ ./tst.sh
foo
---
bar

不确定问题出在哪里,因为您的代码中已经有了您需要做的事情,但这可能会有助于简化代码:

$ cat tst.sh
function prtStuff() {
    awk -v x="$1" 'BEGIN{ print x }'
}

prtStuff "foo"
prtStuff "---"
prtStuff "bar"

$ ./tst.sh
foo
---
bar

不确定问题出在哪里,因为您的代码中已经有了您需要做的事情,但这可能会有助于简化代码:

$ cat tst.sh
function prtStuff() {
    awk -v x="$1" 'BEGIN{ print x }'
}

prtStuff "foo"
prtStuff "---"
prtStuff "bar"

$ ./tst.sh
foo
---
bar

不确定问题出在哪里,因为您的代码中已经有了您需要做的事情,但这可能会有助于简化代码:

$ cat tst.sh
function prtStuff() {
    awk -v x="$1" 'BEGIN{ print x }'
}

prtStuff "foo"
prtStuff "---"
prtStuff "bar"

$ ./tst.sh
foo
---
bar


您已经将
模式
作为变量。只需为
/\([01]\)/
添加一个,您就可以将其设置为一个shell函数。不完全是这样。您将使用函数的位置参数。请参阅和下面关于.Right的部分,但您可以使用
-v
参数中的参数来改变您现在使用硬编码shell变量的方式。另外,对脚本的更正。。。您使用
-v
将多个变量传递到awk脚本,但您没有在脚本中使用它们中的大多数。对于
print rec
行的输出,您将从单引号脚本中转义以使用原始shell变量。相反,请使用:
print rec>>MYPATH NAME\u OF\u FILE DATE.“FILE\u EXT你必须得到Arnold Robbins的《有效的Awk编程》第四版,因为现在你只是在不同的地方反复尝试代码片段,希望奇迹会发生。Awk有语法,语言结构有意义——你至少要学习最基本的知识。你已经有了
pattern
作为变量。只需为
/\([01]\)/
添加一个,您就可以将其设置为一个shell函数。不完全是这样。您将使用函数的位置参数。请参阅和下面关于.Right的部分,但您可以使用
-v
参数中的参数来改变您现在使用硬编码shell变量的方式。另外,对脚本的更正。。。您使用
-v
将多个变量传递到awk脚本,但您没有在脚本中使用它们中的大多数。对于
print rec
行的输出,您将从单引号脚本中转义以使用原始shell变量。相反,请使用:
print rec>>MYPATH NAME\u OF\u FILE DATE.“FILE\u EXT你必须得到Arnold Robbins的《有效的Awk编程》第四版,因为现在你只是在不同的地方反复尝试代码片段,希望奇迹会发生。Awk有语法,语言结构有意义——你至少要学习最基本的知识。你已经有了
pattern
作为变量。只需为
/\([01]\)/
添加一个,您就可以将其设置为一个shell函数。不完全是这样。您将使用函数的位置参数。请参阅和下面关于.Right的部分,但您可以使用
-v
参数中的参数来改变您现在使用硬编码shell变量的方式。另外,对脚本的更正。。。您使用
-v
将多个变量传递到awk脚本,但您没有在脚本中使用它们中的大多数。对于
print rec
行的输出,您将从单引号脚本中转义以使用原始shell变量。相反,请使用:
print rec>>MYPATH NAME\u OF\u FILE DATE.“FILE\u EXT你必须得到Arnold Robbins的《有效的Awk编程》第四版,因为现在你只是在不同的地方反复尝试代码片段,希望奇迹会发生。Awk有语法,语言结构有意义——你至少要学习最基本的知识。你已经有了
pattern
作为变量。只需为
/\([01]\)/
添加一个,您就可以将其设置为一个shell函数。不完全是这样。您将使用函数的位置参数。请参阅和下面关于.Right的部分,但您可以使用
-v
参数中的参数来改变您现在使用硬编码shell变量的方式。另外,对脚本的更正。。。您使用
-v
将多个变量传递到awk脚本,但您没有在脚本中使用它们中的大多数。对于
print rec
行的输出,您将从单引号脚本中转义以使用原始shell变量。相反,请使用:
print rec>>MYPATH NAME\u OF\u FILE DATE.“FILE\u EXT你必须得到Arnold Robbins的《有效的Awk编程》第四版,因为现在你只是在不同的地方反复尝试代码片段,希望奇迹会发生。Awk有语法,语言结构有意义——你至少要学习最基本的知识。