दिलचस्प पोस्ट
रेगेक्स नेस्टेड कोष्ठक आलसी छवियाँ gridView में डाउनलोड करें IOS MKMapView सभी मार्करों को दिखाने के लिए ज़ूम करें "android.intent.category.DEFAULT" का उद्देश्य क्या है? जावा में दो एक्सएमएल फ़ाइलें मर्ज करें आईफोन निकटता सेंसर जावा में सिंगलटन के रूप में एन्यूम का उपयोग करने के लिए सबसे अच्छा तरीका क्या है? जावा के लिए ग्रहण आईडीई – पूर्ण डार्क थीम जावा – getClassLoader ()। GetResource () मुझे bonkers ड्राइविंग JSON को जावा में परिवर्तित करना एसएफ 2 फॉर्म: त्रुटि न तो संपत्ति … और न ही तरीकों में से एक "प्राप्त करें JQuery के डिफर्ड ऑब्जेक्ट में एक त्रुटि फेंक वेबड्राइवर 45.05 एमएस के बाद पोर्ट 7055 पर 127.0.0.1 होस्ट करने के लिए कनेक्ट करने में असमर्थ सिस्टम। डायग्नोस्टिक्स। डिबग कहां प्रदर्शित होता है। Laravel 5 नहीं सीएसएस फ़ाइलों को खोजने

शेल स्क्रिप्ट में किसी अन्य स्ट्रिंग के लिए एक उपस्ट्रिंग बदलें

मेरे पास "मैं सुज़ी और मैरी प्यार करता हूं" और मैं "सूजी" को "सारा" में बदलना चाहता हूं।

#!/bin/bash firstString="I love Suzi and Marry" secondString="Sara" # do something... 

परिणाम इस तरह होना चाहिए:

 firstString="I love Sara and Marry" 

Solutions Collecting From Web of "शेल स्क्रिप्ट में किसी अन्य स्ट्रिंग के लिए एक उपस्ट्रिंग बदलें"

स्ट्रिंग (वास्तव में नियमित अभिव्यक्ति) की पहली घटना को बदलने के लिए, ${string/regexp/replacement} :

 #!/bin/bash original_string='I love Suzy and Mary' string_to_replace_Suzy_with='Sara' result_string="${original_string/Suzy/$string_to_replace_Suzy_with}" 

$ प्रतिस्थापन के साथ $ पैटर्न के सभी मिलानों को बदलने के लिए, पहला स्लैश दोगुना करें:

 string="The secret code is 12345" pattern="[0-9]" echo ${string//$pattern/X} # The secret code is XXXXX 

सुनिश्चित करें कि स्क्रिप्ट को bash साथ निष्पादित किया गया है। अन्य गोले (जैसे sh ) "खराब प्रतिस्थापन" लौटा सकते हैं

यह पूरी तरह से बाश स्ट्रिंग हेरफेर के साथ किया जा सकता है:

 first="I love Suzy and Mary" second="Sara" first=${first/Suzy/$second} 

यह केवल पहली घटना को बदल देगा; उनको बदलने के लिए, पहले स्लैश को दोहराएं:

 first="Suzy, Suzy, Suzy" second="Sara" first=${first//Suzy/$second} # first is now "Sara, Sara, Sara" 

यदि sed में RegExp वर्ण हैं, तो sed से bash का उपयोग करना बेहतर है

 echo ${first_string/Suzi/$second_string} 

यह विंडोज के लिए पोर्टेबल है और कम से कम के रूप में बाश 3.1 के रूप में काम करता है।

यह दिखाने के लिए कि हमें इसे चालू करने से बचने के बारे में बहुत चिंता करने की ज़रूरत नहीं है:

 /home/name/foo/bar 

इस मामले में:

 ~/foo/bar 

लेकिन केवल अगर /home/name शुरुआत में है हम sed जरूरत नहीं है!

यह देखते हुए कि बैश हमें $PWD और $HOME , हम कर सकते हैं:

 echo "${PWD/#$HOME/\~}" 

संपादित करें: मार्क हेफरकैम्प के लिए टिप्पणी में टिप्पणी करने के लिए धन्यवाद / बचते हुए ~ । *

ध्यान दें कि कैसे चर $HOME में स्लैश हैं लेकिन यह कुछ भी नहीं तोड़ता है

आगे पढ़ें: उन्नत बैश-स्क्रिप्टिंग गाइड ।
यदि sed प्रयोग करना आवश्यक है, तो प्रत्येक चरित्र से बचने के लिए सुनिश्चित करें

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

  sed "s/Suzi/$secondString/g" <<<"$firstString" 

डैश के लिए सभी पिछली पोस्ट काम नहीं कर रहे हैं

डैश के लिए:

 result=$(echo $firstString | sed 's/Suzi/$secondString/g') 

यदि कल आप तय करते हैं कि आप मैरी से प्यार नहीं करते हैं तो उसे भी बदल दिया जा सकता है:

 today=$(</tmp/lovers.txt) tomorrow="${today//Suzi/Sara}" echo "${tomorrow//Marry/Jesica}" > /tmp/lovers.txt 

आपके प्रेमी को छोड़ने के लिए 50 तरीके होंगे।