PHP 序列化 AWK 命令加速吗?

PHP 序列化 AWK 命令加速吗?

我编写了一个 SQL 迁移脚本,用于替换 MySQL 转储文件中的文本。使用 替换起来很容易sed,但我们必须考虑特殊序列化(PHP 序列化)。下面的代码可以工作,但awk命令非常昂贵。通过快速谷歌搜索,我看到许多开发人员使用相同的运行时性能问题本文详细说明了简单的更改如何产生巨大的影响。如果有人知道我如何加快此命令的速度,或者更快的替代方案,那就太棒了 :)

#!/usr/bin/env bash

set -e

SQL_FILE="$1"

maindomain="$2"

localdomain="$3"

sed 's/;s:/;\ns:/g' "$SQL_FILE" | \
  awk -F'"' '/s:.+'$maindomain'/ {sub("'$maindomain'", "'$localdomain'"); n=length($2)-1; sub(/:[[:digit:]]+:/, ":" n ":")} 1' | \
  sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g' | \
  sed "s/$maindomain/$localdomain/g" > "$SQL_FILE.txt"

rm "$SQL_FILE"

mv "$SQL_FILE.txt" "$SQL_FILE"

答案1

awk我上面遇到的问题通过更新(MacOS 12.6 (21G115))上的库得到解决。运行上述问题陈述中显示的命令后,出现了显著的改进。brew install cgrepbrew install gawk到~awk -F'"' '/s:.+'$maindomain'/ {sub(...3-5 minutessys 0m0.039s.

我不需要将awk命令更改为cgrepgawk

相关内容