एक यूआरएल में स्लैश बदलें


1

मैं एक वेब पते से सभी स्लैश को बदलना चाहता हूं।

उदाहरण पता: https://example.com/sub/folder/files/file.txt

अपेक्षित परिणाम: example.com-sub-folder-files-file.txt

मैं https को हटा सकता हूं लेकिन मुझे शेष स्लैश को बदलने में असमर्थ होना चाहिए:

echo $(echo 'https://example.com/sub/folder/files/file.txt' | sed 's/http[s]*:\/\///')

उपरोक्त केवल मुझे यह देता है:

example.com/sub/folder/files/file.txt

स्लैश को बदलने के लिए दूसरा सेड जोड़ना केवल पहले सामने वाले को हटाता है। मैं क्या गलत कर रहा हूं?

जवाबों:


1

इसे इस्तेमाल करे:

echo "https://www.example.com/sub/folder/files/file.txt" | sed -e 's#http[s]://##' -e 's#/#-#g'

परिणाम है: www.example.com-sub-folder-files-file.txt

इसका कारण केवल 'पहले सामना' की जगह था, क्योंकि आप जी को याद कर रहे थे क्योंकि पिछले 'पैरामीटर' को सीड के लिए पारित किया गया था, यह वैश्विक के लिए खड़ा है और वांछित प्रतिस्थापन के साथ पाए गए सभी उदाहरणों को प्रतिस्थापित करेगा, इसके बिना, यह केवल प्रतिस्थापित करेगा पहला उदाहरण मिला।

इसके अलावा यह ध्यान देने योग्य है कि आप किसी भी प्रतीक के साथ sed कमांड के मापदंडों को अलग कर सकते हैं, यह '/' होने की आवश्यकता नहीं है, मैं खोज में शामिल नहीं प्रतीक का उपयोग करना पसंद करता हूं और सभी को प्रतिस्थापित करता हूं, क्योंकि यह आपको कुछ पलटने से बचाएगा। जब आप प्रतिस्थापित कर रहे हों, तो आसानी से वर्ण और संभावित बग के साथ /।

इसके अलावा, आप -e विकल्प का उपयोग करके कुछ आदेशों को एक साथ जोड़ सकते हैं, जैसा कि आप ऊपर देख सकते हैं, मैंने 'https: //' को कुछ भी नहीं (हटाकर) बदल दिया, फिर सभी '/' को '-' से बदल दिया। आसान आसान।

आशा है कि यह आपकी मदद करता है


इससे मुझे वैश्विक मदद मिली। आपका बहुत बहुत धन्यवाद! मैं आपको सीड पाइप में पठनीयता के जवाब के रूप में स्वीकार करता हूं।
Stargazer

1

आप डबल की जरूरत नहीं है echo

मुझे समझ में नहीं आता कि स्लैश को बदलने के लिए दूसरे सेड को जोड़ने का क्या मतलब है, केवल पहले सामने वाले को हटा देता है। - आपके पास केवल एक sed उदाहरण है। आप इस sed तरह से 2 कमांड के साथ आसानी से कर सकते हैं :

echo 'https://example.com/sub/folder/files/file.txt' | sed 's,http[s]*:\/\/,,;s,/,-,g'

डबल इको केवल उदाहरण के लिए है, यह वास्तव में आवश्यक नहीं था। मेरी स्क्रिप्ट में मैं इसका उपयोग चर सेट करने के लिए करता हूं। वैश्विक के लिए जी मैं क्या याद किया है।
Stargazer
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.