Bash 将awk放入函数中
我有4个AWK非常相似,所以我想把它们放在一个函数中。我的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
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有语法,语言结构有意义——你至少要学习最基本的知识。