如何使用sed将ASCII转换为具有百分比编码的URL

时间:2013-08-12 14:03:49

标签: windows batch-file sed awk gawk

使用sed构建包含百分比代码的网址。可以使用简化的分子输入线路输入系统(SMILES)来表示化学品。请参阅:http://en.wikipedia.org/wiki/SMILES

以下是化学铁 - 硫 - 钼辅助因子的SMILES代码:

[O-]C(=O)CCC1(CC([O-])=O)O[Mo]23(OC1=O)[S]1[Fe]45S[Fe]67[S]8[Fe]9[S]6[Fe]6%10S[Fe]%11([S]24)[S]3[Fe]11S[Fe]8([S]96)[N]57%10%111

某些化学站点允许使用URL中的SMILES进行访问。如您所见(在原子[Fe]6[N]57之后),SMILES可能包含百分比%符号。

我需要将%符号转换为其网址转义码%25。我在Windows 7中使用GnuWin32 sed版本4.1.5.4013。我有这个sed脚本:

sed -e "s/\%/\%25/g" < C:\1.txt > C:\2.txt

但它返回此错误消息:

sed: -e expression #1, char 6: unterminated `s' command

此外,当我在命令模式下查看脚本时,我看到:

sed -e "s/\25/g" C:\bin\1.txt > C:\bin\2.txt

很明显%符号被删除了。

如何修改sed脚本以转换SMILES字符串以包含以符号%开头的URL转义码。

也愿意使用awk或gawk。

提前感谢您的回答。

1 个答案:

答案 0 :(得分:2)

Windows命令shell的语法:

sed "s/%/25%/g" file

Windows命令shell('batch')脚本的语法:

@ECHO OFF &SETLOCAL
sed "s/%%/25%%/g" file