सफेद स्थानों को बदलने का सबसे आसान तरीका (अंडरस्कोर) _ बैश में [बंद]


92

हाल ही में मुझे एक छोटी सी स्क्रिप्ट लिखनी थी जिसने VMs को XenServer में पार्स किया था और VMs के नाम ज्यादातर व्हाइट स्पेस जैसे कि विंडोज एक्सपी या विंडोज सर्वर 2008 में थे, मुझे उन व्हाइट स्पेस को ट्रिम करना था और उन्हें अंडरस्कोर _ से बदलना था। मुझे ऐसा करने के लिए एक सरल समाधान मिला, यह sed का उपयोग कर रहा है जो कि स्ट्रिंग हेरफेर की बात है जब यह महान उपकरण है।

echo "This is just a test" | sed -e 's/ /_/g'

रिटर्न

This_is_just_a_test

क्या इसे पूरा करने के अन्य तरीके हैं?


8
और सवाल है
रेजजेड

2
हाय लट्ज़, स्टैकओवरफ़्लो एक प्रश्न और उत्तर साइट है। आप सवाल पूछते हैं और अन्य लोग इसका जवाब देते हैं, या आप दूसरों से सवाल जवाब कर सकते हैं। यदि आप अपने ज्ञान को साझा करना चाहते हैं, तो आप एक प्रश्न पूछ सकते हैं, फिर स्वयं इसका उत्तर दें (कुछ समय के लिए दूसरों को भी जवाब देने के बाद)।
मौविसील

2
ऑप्स ने सोचा कि मैं इस ज्ञान को इस तरह से जोड़ूंगा ताकि यह यहां संग्रहीत हो। वैसे भी अगली बार यू ही कहा होगा, मेरे ही सवाल का जवाब देकर :)
flazzarini

जवाबों:


175

आप इसे केवल शेल का उपयोग करके कर सकते हैं, इसके लिए कोई आवश्यकता नहीं है trया नहींsed

$ str="This is just a test"
$ echo ${str// /_}
This_is_just_a_test

5
या सभी गैर- ASCII शब्द चार्ट को अंडरस्कोर में रूपांतरित करें ${str//[^a-zA-Z0-9]/_}:; किसी भी तरह, यदि आप शुद्ध POSIX शेल से चिपके नहीं हैं, तो आपके लिए उपलब्ध सुविधाओं का उपयोग करें।
बंदूकें

वहाँ विराम चिह्न भी मान्य हो सकते हैं। हम कभी नहीं जानते थे।
भूतडॉग .४

इस समाधान के लिए thx वास्तव में मैं क्या देख रहा था। बहुत बहुत धन्यवाद
flazzarini

18

यह बॉर्डरलाइन प्रोग्रामिंग है, लेकिन tr का उपयोग करते हुए देखें :

$ echo "this is just a test" | tr -s ' ' | tr ' ' '_'

करना चाहिए। पहला मंगलाचरण नीचे के रिक्त स्थान को निचोड़ता है, दूसरा अंडरस्कोर के साथ बदलता है। आपको संभवतः TAB और अन्य व्हाट्सएप वर्ण जोड़ने की आवश्यकता है, यह केवल रिक्त स्थान के लिए है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.