Как использовать sed для преобразования ASCII в URL с процентным кодированием

Я использую sed для создания URL-адресов с процентными кодами. Химические вещества могут быть представлены с использованием упрощенной системы линейного ввода молекулярного ввода (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

Некоторые химические сайты разрешают доступ, используя SMILES в URL-адресе. Как видите (после атомов [Fe]6 и [N]57) SMILES может включать символ процента %.

Мне нужно преобразовать символ % в escape-код URL-адреса %25. Я использую GnuWin32 sed версии 4.1.5.4013 в Windows 7. У меня есть этот 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 и включить escape-коды URL, начинающиеся с символа %.

Также я готов использовать awk или gawk.

Заранее спасибо за ответ.


person Jay Gray    schedule 12.08.2013    source источник
comment
Похоже, это больше проблема сценариев Windows, чем проблема sed.   -  person danfuzz    schedule 12.08.2013


Ответы (1)


Синтаксис командной оболочки Windows:

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

Синтаксис сценария командной оболочки Windows («пакетного»):

@ECHO OFF &SETLOCAL
sed "s/%%/25%%/g" file
person Endoro    schedule 12.08.2013
comment
@Endoro: Что случилось с твоей старой аватаркой с твоей фотографией? - person Aacini; 13.08.2013
comment
@Aacini пора менять после 1/2 года в SO :) - person Endoro; 13.08.2013