我有一个 8400 万行的 XML,正在 Red Hat Linux 中使用“gawk”进行处理。(好吧,有些人会建议使用其他工具而不是 GAWK,但我的 XML 没有多行标记或任何其他特性,使 GAWK 不是这项工作的良好选择。)
我关心的是性能。
我最初的 AWK 脚本是这样的:
# Test_1.awk
BEGIN {FS = "<|:|=";}
{
if ($3 == "SubNetwork id")
{
# do something
}
}
END {
# print something
}
Run Code Online (Sandbox Code Playgroud)
每行进行一次 8400 万次字符串比较。
我注意到“SubNetwork id”仅在该行中有 4 个字段 (NF=4) 时出现,因此我更改了脚本以减少字符串比较:
# Test_2.awk
BEGIN {FS = "<|:|=";}
{
if (NF == 4)
{
if ($3 == "SubNetwork id")
{
# do something
}
}
}
END {
# print something
} …Run Code Online (Sandbox Code Playgroud)