मैं %20
और %5B
तरह प्रतिशत-भाग निकले वर्ण वाली स्ट्रिंग है, और मुझे %20
के लिए \
है जैसे कि यह "सामान्य" वर्ण बदलना चाहते हैं और %5B
के लिए।बैश के साथ स्ट्रिंग में प्रतिशत-भाग निकले वर्ण (20%,% 5 ब, ...) की जगह
मैं यह कैसे कर सकता हूं?
मैं %20
और %5B
तरह प्रतिशत-भाग निकले वर्ण वाली स्ट्रिंग है, और मुझे %20
के लिए \
है जैसे कि यह "सामान्य" वर्ण बदलना चाहते हैं और %5B
के लिए।बैश के साथ स्ट्रिंग में प्रतिशत-भाग निकले वर्ण (20%,% 5 ब, ...) की जगह
मैं यह कैसे कर सकता हूं?
बैश में निर्मित printf एक विशेष फॉर्मेट स्पेसिफायर (यानी% ख) जो \ x धर्मान्तरित है * * संबंधित मान पर:
$ str='foo%20%5B12%5D'
$ printf "%b\n" "${str//%/\\x}"
foo [12]
अंत में, धन्यवाद आईआरसी चैनल #bash लिए, मैं एक "इतना बुरा नहीं" समाधान पाया:
echo `echo string%20with%5Bsome%23 | sed 's/%/\\\x/g'`
मुझे नहीं पता कि आसपास के 'इको' आपको क्या खरीदता है। क्या स्ट्रिंग% 20with% 5 गूंज% 23 | sed/s /%/\\\ x/g'' काम नहीं करते? – Thanatos
@ तानाटोस: sed केवल 'string \ 2020% \ x5Bsome \ x23' में 'स्ट्रिंग% 20with% 5 शीर्ष% 23' को बदलता है। इसे 'echo -e' में पास करने का अर्थ यह होगा कि' \ x..' से बचने के लिए सही ढंग से संसाधित किया जाता है। [गायब '-e' और बैकटिक्स को डबल कोट्स में लपेटा जाना चाहिए: 'echo -e" $ (echo string% 20with% 5bome% 23 | sed's /%/\\\ x/g') "'।] – bobbogo
यदि आप किसी फ़ाइल से बदलना चाहते हैं: 'echo \ 'sed's s /%/\\\ x/g' $ file \'> $ newfile' – lolesque
ठीक है, धन्यवाद, अगर आप चाहें तो मेरी स्क्रिप्ट यहां है: http: //pastebin.com/jN862wFZ – Dorian
मैंने कुछ मामूली सुधार किए हैं और यहां एक संघीय संस्करण लिखा है: http://pastebin.com/y8KBgVA2 – marco
बहुत बहुत धन्यवाद, लघु संस्करण मेरे लिए बनाए रखना मुश्किल है, इसलिए मैं लंबे समय तक रहता हूं एक। – Dorian