में एक स्ट्रिंग की जगहों को जांचने के लिए कैसे जांचें कि एक स्ट्रिंग "ए बी" सी 'डी "की तरह हो सकती है, मैं कैसे जांच सकता हूं कि स्ट्रिंग में मौजूद एकल/डबल कोट और स्थान है?बैश खोल
बैश खोल
उत्तर
कैसे के लिए इसी तरह एक दृष्टिकोण के बारे में:
$ A="some string"; echo $A | grep \ | wc -l
1
$ A="somestring"; echo $A | grep \ | wc -l
0
?
string="a b '' c '' d"
if [ "$string" == "${string//[\' ]/}" ]
then
echo did not contain space or single quote
else
echo did contain space or single quote
fi
यह करने के लिए पोर्टेबल रास्ता grep
साथ है:
S="a b '' c '' d"
if echo $S | grep -E '[ "]' >/dev/null
then
echo "It's a match"
fi
... थोड़ा बदसूरत, लेकिन हर जगह कार्य करने की गारंटी।
grep में '-q' विकल्प के साथ,'>/dev/null' की आवश्यकता नहीं है। थोड़ा अच्छा – Ray
आप बैश में रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं:
string="a b '' c '' d"
if [[ "$string" =~ \ |\' ]] # slightly more readable: if [[ "$string" =~ (|\') ]]
then
echo "Matches"
else
echo "No matches"
fi
संपादित करें:
ऊपर स्पष्ट कारणों के लिए, यह एक चर में regex डाल करने के लिए बेहतर है:
pattern=" |'"
if [[ $string =~ $pattern ]]
और डबल स्क्वायर ब्रैकेट के अंदर उद्धरण आवश्यक नहीं हैं। उनका उपयोग सही पर नहीं किया जा सकता है या रेगेक्स को एक शाब्दिक स्ट्रिंग में बदल दिया जाता है।
मेरे लिए सबसे साफ एक आईएमओ, मैंने टैब भी जोड़ा लेकिन थोड़ा फंकी दिखता है क्योंकि मुझे वहां डॉलर-कोट को फेंकना था 'पैटर्न = "|' '$' | \ t'' - क्या कोई क्लीनर तरीका है? – nhed
@nhed: एकल वर्णों के मामले में, आप पाइप वर्ण विकल्प के बजाय एक वर्ण पैटर्न का उपयोग कर सकते हैं। यह थोड़ा कम बदसूरत हो सकता है: 'pattern = $ '[\' \ t] ''। आप एक चर का उपयोग भी कर सकते हैं: 'tab = $ '\ t'; पैटर्न = "| '| $ टैब" 'या एक शाब्दिक टैब (जो पठनीयता के लिए अच्छा नहीं है) इसे Ctrl-V-Tab का उपयोग करके टाइप करके। –
function foo() {
echo "String: $*"
SPACES=$(($#-1))
echo "Spaces: $SPACES"
QUOTES=0
for i in $*; do
if [ "$i" == "'" ]; then
QUOTES=$((QUOTES+1))
fi
done
echo "Quotes: $QUOTES"
echo
}
S="string with spaces"
foo $S
S="single' 'quotes"
foo $S
S="single '' quotes"
foo $S
S="single ' ' quotes"
foo $S
पैदावार:
String: string with spaces
Spaces: 2
Quotes: 0
String: single' 'quotes
Spaces: 1
Quotes: 0
String: single '' quotes
Spaces: 2
Quotes: 0
String: single ' ' quotes
Spaces: 3
Quotes: 2
[[ "$str" = "${str%[[:space:]]*}" ]] && echo "no spaces" || echo "has spaces"
ध्यान दें कि यह उन लोगों के लिए टैब या न्यूलाइन का पता नहीं लगाता है, जो –
मुझे आश्चर्य है कि क्यों कोई भी उल्लेख किया [: अंतरिक्ष:] की स्थापना की। आमतौर पर न केवल अंतरिक्ष चरित्र का पता लगाने में रुचि रखते हैं। मुझे अक्सर किसी भी सफेद स्थान का पता लगाने की आवश्यकता होती है, उदा। टैब। "Grep" उदाहरण इस तरह दिखेगा:
$ echo " " | egrep -q "[:space:]" && echo "Has no Whitespace" || echo "Has Whitespace"
Has Whitespace
$ echo "a" | egrep -q "[:space:]" && echo "Has no Whitespace" || echo "Has Whitespace"
Has no Whitespace
उत्सुक हैं, इस समाधान में रुचि रखने वालों के लिए, मेरा 'grep' मुझे सूचित करता है कि' वर्ण वर्ग वाक्यविन्यास [[: space:]] है, [नहीं: ] '। अन्यथा, उत्कृष्ट समाधान! – jdferreira
चूंकि प्रश्न "बैश" टैग किया गया है, इसलिए किसी स्ट्रिंग का परीक्षण करने के लिए किसी अन्य प्रक्रिया को शुरू करने की आवश्यकता नहीं है: * [[: space:]] * में "केस" $ स्ट्रिंग "*)" मिलान "गूंज ;; esac' –
- 1. खोल/बैश
- 2. बैश खोल
- 3. "[]" बनाम "[[]]" बैश खोल
- 4. एक बैश खोल
- 5. बैश खोल में '$$' क्या है?
- 6. बैश खोल तारीख पार्स, महीने
- 7. बैश खोल और बैश टर्मिनल के बीच अंतर?
- 8. सही बैश और खोल स्क्रिप्ट चर पूंजीकरण
- 9. विंडोज के लिए गिट: गिट बैश खोल
- 10. एक बैश खोल स्क्रिप्ट का परीक्षण
- 11. wxPython: बैश खोल विंडो कैसे बनाएं?
- 12. बैश: उलटा (यानी नहीं) खोल वाइल्डकार्ड विस्तार?
- 13. सिग्विन खोल
- 14. मछली खोल
- 15. खोल
- 16. बैश: Virtualenvwrapper इंस्टॉल करने के बाद खोल को कैसे ताज़ा करें [खोल को पुनरारंभ किए बिना]?
- 17. बैश शैल - डॉस खोल एफ 8 के बराबर क्या है?
- 18. नए खोल में बैश कमांड चलाएं और इस कमांड को
- 19. बैश खोल 'if` कमांड कुछ देता है' तो कुछ
- 20. बैश खोल स्क्रिप्ट (यूनिक्स में) में पुनः लोड करें। प्रोफाइल?
- 21. कैसे करें: खोल स्क्रिप्ट से बैश का पता लगाएं
- 22. बैश खोल के माध्यम से प्रॉक्सी कैसे सेट करें?
- 23. ब्राउज़र में बैश खोल बनाने के लिए कितना व्यवहार्य होगा?
- 24. बैश vi खोल मोड में टैब स्वत: पूर्णता
- 25. बैश खोल स्क्रिप्ट में परिसर स्थितियों का उपयोग
- 26. एक बैश खोल स्क्रिप्ट चर में एक सबस्ट्रिंग कैसे खोजें
- 27. बैश
- 28. गिट बैश: बैश (WIndows)
- 29. खोल स्क्रिप्ट
- 30. एक बेहतर लिनक्स खोल?
आप ऐसा क्यों करना चाहते हैं? यदि आप कोशिश कर रहे हैं, तो कहें, "अमान्य" फ़ाइल नाम की जांच करें, आप रिक्त स्थान या उद्धरण के साथ फ़ाइल नामों का समर्थन करने के लिए स्क्रिप्ट को ठीक कर सकते हैं। उदाहरण के लिए। –
क्या आप कह रहे हैं कि आप यह जानना चाहते हैं: ए) एक स्थान के चारों ओर एक सिंगल/डबल कोट बी है) एक स्पेस के साथ एक सिंगल/डबल कोट सी) कुछ उससे अलग है? – ezpz
बस यह जांचने के लिए कि क्या किसी स्ट्रिंग में कोई एकल उद्धरण है और यदि इसमें कोई स्थान – derrdji