ฉันเพิ่งเริ่มใช้ sed และมีปัญหาเมื่อใช้ sed จาก Apache mod_seq ภารกิจคือเปลี่ยนโพสต์บริการเว็บเป็นโพสต์อัพโหลดไฟล์ Content-Type มีการเปลี่ยนแปลงโดยใช้ mod_headers และงานที่นี่คือการเปลี่ยนเนื้อหาของคำขอ
คำขอร่างกาย:
<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 ด้วย sed จากพรอมต์คำสั่ง:
sed "s/^.*$/--AaB03x\nContent-disposition: form-data; name=\"xmlfile\"; filename=\"myfile.xml\"\nContent-Type: text\/xml\n\n&\n--AaB03x--\n/" request.xml
ผลผลิตตามที่คาดไว้กับการขึ้นบรรทัดใหม่:
--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) การโทรด้วย Apache mod_sed:
InputSed "s/^.*$/--AaB03x\nContent-disposition: form-data; name=\"xmlfile\"; filename=\"myfile.xml\"\nContent-Type: text\/xml\n\n&\n--AaB03x--\n/"
ส่งออกจาก mod_sed เมื่อคำขอเข้าสู่เว็บแอปของฉัน หมายเหตุ "n" แทนการขึ้นบรรทัดใหม่
--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
ฉันได้ลองด้วยคำสั่ง '' และ "" i InputSed แล้ว และลองด้วย backspaces 1, 2, 3 และ 4 หน้าตัวละครควบคุมของฉัน (\ r และ \ n) ดูเหมือนว่า Apache หรือ mod_sed กำลังละเว้นอักขระเครื่องหมายทับขวา
ใครที่รู้ว่ามีปัญหาพิเศษกับ mod_sed และ backslash บ้าง