我有两个与AWK完美配合的
#!/usr/bin/awk -f
BEGIN {
FS=">|</"
OFS=","
}
{
data[count++] = $2
ptint $2
}
END{
print data[2],data[6],data[3], FILENAME
}
上面的脚本将扫描xml文档并返回第2,第6,第3个元素以及文件名。
for filename in *.xml
do
awk -f myscript3.awk $filename >> out.txt
done
上面的脚本将扫描整个文件夹并列出xml文件,然后执行myscript。 我必须将这两个脚本合并为一个。 谢谢你的帮助
答案 0 :(得分:1)
关于调用约定的注意事项:如果您将脚本作为awk -f script
运行,则开头不需要shabang(#!
)行。或者,如果./script
可执行,则可以将shabang作为script
运行。
<强>答案强>
awk
有BEGINFILE
和ENDFILE
,用它们替换BEGIN
/ END
并将xml
个文件作为参数,以下应该工作:
正如丹尼斯在下面的评论中指出的那样,BEGINFILE
没有必要。另请注意,这需要相当新版本的GNU awk
才能正常工作。
<强> myScript3.awk 强>
BEGIN {
FS=">|</"
OFS=","
}
{
data[count++] = $2
print $2
}
ENDFILE {
print data[2],data[6],data[3], FILENAME
}
像这样运行:
awk -f myscript.awk *.xml
答案 1 :(得分:0)
#!/bin/bash
AWKPROG='BEGIN {FS=">|</" OFS=","}
{ data[count++] = $2; ptint $2 }
END {print data[2], data[6], data[3], FILENAME}'
for filename in *.xml;do awk $AWKPROG $filename; done >> out.txt
警告:未经测试。