使用不同风格的“awk”将反斜杠的数量加倍

Fra*_*ona 1 awk

我正在寻找一种可移植的方法来转义字符串中的反斜杠awk

例如,对于 GNU 和 BSD,您可以编写:

echo '\ \\ \\\' | command -p awk '{gsub(/\\/,"\\\\"); print}'
Run Code Online (Sandbox Code Playgroud)

但在其他 NIX 上你必须这样写:

echo '\ \\ \\\' | command -p awk '{gsub(/\\/,"\\\\\\\\"); print}'
Run Code Online (Sandbox Code Playgroud)

如果您无法访问 AIX/HP-UX/Solaris/etc...,我认为可以awk通过以下方式用 GNU/BSD 模拟该问题:

echo '\ \\ \\\' | awk '{gsub(/\\/, ... ); print}'

echo '\ \\ \\\' | awk --posix '{gsub(/\\/, ... ); print}'
Run Code Online (Sandbox Code Playgroud)

其中...两个命令相同;两者都应该产生:

\\ \\\\ \\\\\\
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 5

awk命令应该是可移植的:

echo '\ \\ \\\' | awk '{gsub(/\\/, "&&")} 1'
Run Code Online (Sandbox Code Playgroud)

其中&表示使用所使用的正则表达式模式的完整匹配字符串 ie /\\/