Je viens de commencer à utiliser sed et j'ai un problème lorsque j'utilise sed depuis Apache mod_seq. La tâche consiste à transformer un message de service web en message de téléchargement de fichiers. Le Content-Type a déjà été modifié à l'aide de mod_headers et la tâche ici est de modifier le corps de la requête.
Corps de la demande :
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://tracx.de/pkp/interfaces/msg/1.0" xmlns:ns1="http://tracx.de/pkp/interfaces/core/1.0"><soapenv:Header/><soapenv:Body><ns:test>Hello World</ns:test></soapenv:Body></soapenv:Envelope>
1) ok test avec sed depuis l'invite de commande :
sed "s/^.\*$/--AaB03x\\nContent-disposition: form-data; name=\\"xmlfile\\"; filename=\\"myfile.xml\\"\\nContent-Type: text\\/xml\\n\\n&\\n--AaB03x--\\n/" request.xml
Sortie comme prévu avec les nouvelles lignes :
\--AaB03x
Content-disposition: form-data; name="xmlfile"; filename="myfile.xml"
Content-Type: text/xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://tracx.de/pkp/interfaces/msg/1.0" xmlns:ns1="http://tracx.de/pkp/interfaces/core/1.0"><soapenv:Header/><soapenv:Body><ns:test>Hello World</ns:test></soapenv:Body></soapenv:Envelope>
--AaB03x--
2) Appel Sed avec Apache mod_sed :
InputSed "s/^.\*$/--AaB03x\\nContent-disposition: form-data; name=\\"xmlfile\\"; filename=\\"myfile.xml\\"\\nContent-Type: text\\/xml\\n\\n&\\n--AaB03x--\\n/"
Sortie du mod_sed lorsque la requête entre dans mon application web. Notez le "n" au lieu de la nouvelle ligne.
\--AaB03xnContent-disposition: form-data; name="xmlfile"; filename="myfile.xml"nContent-Type: text/xmlnn<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://tracx.de/pkp/interfaces/msg/1.0" xmlns:ns1="http://tracx.de/pkp/interfaces/core/1.0"><soapenv:Header/><soapenv:Body><ns:test>monday</ns:test></soapenv:Body></soapenv:Envelope>n--AaB03x--n
J'ai essayé avec '' et "" dans la commande InputSed. Et j'ai essayé avec 1, 2, 3 et 4 espaces avant mes caractères de contrôle ( \r y \n ). Il semble qu'Apache ou le mod_sed ignorent le caractère backslash.
Quelqu'un sait-il s'il y a des problèmes particuliers avec le mod_sed et le backslash ?