[英]Putting awk in a function
I have 4 awks that are really similiar so I want to put them in a function. 我有4个类似的awks,所以我想将它们放在一个函数中。 My awk code is... 我的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"
So the pattern and regular expression differ. 因此,模式和正则表达式不同。 How can I put this awk in a function where I can replace pattern with $1 and /([01])/ with $2 if I already use those in my awk? 如果我已经在awk中使用了awk,该如何将awk放入一个函数中,该函数可以将模式$ 1和/([[01])//替换为$ 2?
EDIT: I was thinking I can do... 编辑:我以为我可以...
printFmt(){
awk -v .......
$0 ~ patten {
rec..
for..
rec..
if($i ~ search)
break
print rec
then call with printFmt set? 然后调用printFmt设置?
}
Not sure where the problem is since you already have in your code exactly what you need to do but maybe this will help by simplifying it a bit: 不确定问题出在哪里,因为您的代码中已经完全有您需要做的事情,但这也许可以通过简化一点来帮助您:
$ cat tst.sh
function prtStuff() {
awk -v x="$1" 'BEGIN{ print x }'
}
prtStuff "foo"
prtStuff "---"
prtStuff "bar"
$ ./tst.sh
foo
---
bar
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.