如何用awk实现跨NIX系统的反斜杠转义(翻倍)?
跨平台awk反斜杠转义方案
我需要一种可移植的方法,通过awk将字符串中的每个反斜杠转义为两个反斜杠。
不同系统的现有实现
- GNU与BSD系统:
echo '\ \\ \\\' | command -p awk '{gsub(/\\/,"\\\\"); print}'
- AIX/HP-UX/Solaris等类Unix系统:
echo '\ \\ \\\' | command -p awk '{gsub(/\\/,"\\\\\\\\"); print}'
无特殊系统时的模拟测试
如果无法访问AIX、HP-UX或Solaris这类系统,可以借助GNU/BSD awk模拟该兼容性问题,执行以下两条命令(两条命令中的...需替换为相同的替换内容):
echo '\ \\ \\\' | awk '{gsub(/\\/, ... ); print}' echo '\ \\ \\\' | awk --posix '{gsub(/\\/, ... ); print}'
两条命令的预期输出完全一致,应为:
\\ \\\\ \\\\\\n
内容的提问来源于stack exchange,提问作者Fravadona
相关产品推荐
相关产品推荐

