స్ట్రింగ్ బాష్‌లో సబ్‌స్ట్రింగ్‌ను కలిగి ఉందో లేదో ఎలా తనిఖీ చేయాలి

How Check If String Contains Substring Bash



ప్రశ్న ఏమిటంటే, స్ట్రింగ్‌లో బాష్‌లో సబ్‌స్ట్రింగ్ ఉందో లేదో ఎలా తనిఖీ చేయాలి. సమాధానం: ప్యాటర్న్ మ్యాచింగ్ ఉపయోగించండి. ఇది మరొక ప్రశ్నకు దారితీస్తుంది, అంటే: సరళి సరిపోలిక అంటే ఏమిటి? సరే, ఒక వాక్యంలోని పదబంధానికి కొన్ని లక్షణాలు ఉంటాయి. అందుకే అదే వాక్యంలోని లేదా ఇతర వాక్యాలలోని ఇతర పదబంధాలకు భిన్నంగా ఉంటుంది. లక్షణాలను నమూనాగా కోడ్ చేయవచ్చు. ఆ విధంగా, స్ట్రింగ్‌లోని ఒక నిర్దిష్ట పదబంధాన్ని గుర్తించవచ్చు. ఒక పెద్ద స్ట్రింగ్‌లో ఒక నిర్దిష్ట సబ్‌స్ట్రింగ్‌ను ఎలా గుర్తించాలో, మరొక సబ్‌స్ట్రింగ్‌తో సరిపోయే సబ్‌స్ట్రింగ్‌ను ఎలా భర్తీ చేయాలో మరియు ఏదైనా స్ట్రింగ్‌ని ఇండెక్స్ ద్వారా పెద్ద స్ట్రింగ్‌లో ఎలా గుర్తించాలో ఈ ఆర్టికల్ వివరిస్తుంది. ఏదేమైనా, వివరణలలోకి ప్రవేశించే ముందు, బాష్‌లో స్ట్రింగ్ స్థాపించబడిన వివిధ మార్గాలను గుర్తుంచుకోవాలి.

ఖాళీలను తప్పించడం ద్వారా స్ట్రింగ్

ప్రతి స్థలాన్ని స్పేస్ ఎస్కేప్ సీక్వెన్స్, ‘’ తో భర్తీ చేయడం ద్వారా స్ట్రింగ్ నిర్మించవచ్చు; లో వలె:







myVar= టూరిజం లో ఈజిప్ట్ దేశంలో ఒకటి 's ప్రముఖ ఆర్థిక పరిశ్రమలు.
బయటకు విసిరారు $ myVar

అవుట్‌పుట్:



ఈజిప్టులో పర్యాటకం దేశంలోని ప్రముఖ ఆర్థిక పరిశ్రమలలో ఒకటి.



గమనిక: అపోస్ట్రోఫీ స్పేస్ ఎస్కేప్ క్రమాన్ని కూడా ఉపయోగించింది.





సింగిల్ కోట్స్ ద్వారా స్ట్రింగ్

స్ట్రింగ్‌లోని అన్ని ఖాళీలను తప్పించుకోవడానికి ప్రోగ్రామర్‌కు సమయం ఉందా? లేదు. అందువల్ల, స్ట్రింగ్‌ని డీలిమిట్ చేయడానికి రెండు సింగిల్ కోట్‌లను ఉపయోగించడం మంచిది; వంటి:

myVar='ఈజిప్టులో పర్యాటకం దేశంలో ఒకటి' 'యొక్క ప్రముఖ ఆర్థిక పరిశ్రమలు. '

సింగిల్-కోటెడ్ స్ట్రింగ్ ఏదైనా ఎస్కేప్ సీక్వెన్స్ విస్తరణ (దాని ప్రభావంతో భర్తీ చేయడం) అనుమతించదు. అదృష్టవశాత్తూ, రెండు స్ట్రింగ్‌లు ఒకదాని పక్కన ఒకటి కోడ్ చేయబడితే, అవి ఒక స్ట్రింగ్‌గా తీసుకోబడతాయి. పైన చేసినట్లుగా, తప్పించుకునే క్రమం మధ్యలో చేర్చబడుతుంది. తప్పించుకునే క్రమం విస్తరించబడుతుంది. కాబట్టి అవుట్‌పుట్ అవుతుంది:



ఈజిప్టులో పర్యాటకం దేశంలోని ప్రముఖ ఆర్థిక పరిశ్రమలలో ఒకటి.

డబుల్ కోట్స్ ద్వారా స్ట్రింగ్

డబుల్ కోట్‌లతో, ఎస్కేప్ సీక్వెన్స్‌లు కూడా విస్తరించబడవు, కానీ వేరియబుల్స్ విస్తరించబడ్డాయి. కింది కోడ్ దీనిని వివరిస్తుంది:

myVar= టూరిజం లో ఈజిప్ట్ దేశంలో ఒకటి 's ప్రముఖ ఆర్థిక పరిశ్రమలు.
బయటకు విసిరారు $ myVar

అవుట్‌పుట్:

ఈజిప్టులో పర్యాటకం దేశంలోని ప్రముఖ ఆర్థిక పరిశ్రమలలో ఒకటి.

గమనిక: అపోస్ట్రోఫీ స్పేస్ ఎస్కేప్ క్రమాన్ని కూడా ఉపయోగించింది.

ఈ వ్యాసంలో, స్ట్రింగ్ యొక్క ప్రధాన రకం సింగిల్ కోట్స్‌లోని స్ట్రింగ్.

రెగ్యులర్ ఎక్స్‌ప్రెషన్ ఫండమెంటల్స్

రెగెక్స్

ఈ స్ట్రింగ్‌ని పరిగణించండి:

ఈ ప్రపంచం నిజంగా మన ఇల్లు కాదు.

ప్రపంచం ఆసక్తికి మూలమైనదిగా ఉండనివ్వండి. అప్పుడు, పెద్ద స్ట్రింగ్ (మొత్తం స్ట్రింగ్) లక్ష్య స్ట్రింగ్ లేదా కేవలం, లక్ష్యం అని పిలువబడుతుంది. కోట్స్‌లో 'ప్రపంచం' రెగ్యులర్ ఎక్స్‌ప్రెషన్ లేదా రెగెక్స్ అని పిలువబడుతుంది. కంటెంట్, ప్రపంచం, ఈ సందర్భంలో నమూనా.

సాధారణ సరిపోలిక

కింది కోడ్‌లో, లక్ష్యం లో 'ప్రపంచం' అనే పదం కనిపిస్తే, ఆ పదం సరిపోలినట్లు మేము చెబుతాము.

p='ఈ ప్రపంచం నిజంగా మా ఇల్లు కాదు.'
reg='ప్రపంచం'
ఉంటే [[ $ str= ~$ reg ]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
లేకపోతే
బయటకు విసిరారుదొరకలేదు
ఉంటుంది

= ~, ఇది by తరువాత అసైన్‌మెంట్ ఆపరేటర్, బైండింగ్ ఆపరేటర్ అంటారు. లక్ష్య స్ట్రింగ్‌లో నమూనా సరిపోలుతుందో లేదో పరిస్థితి తనిఖీ చేస్తుంది. నమూనాకు సంబంధించిన సబ్‌స్ట్రింగ్ టార్గెట్‌లో కనుగొనబడితే, ఎకో స్టేట్‌మెంట్ డిస్‌ప్లేలు కనుగొనబడతాయి. అది కనుగొనబడకపోతే, ప్రతిధ్వని ప్రకటన కనుగొనబడలేదు. ఈ కోడ్ కోసం అవుట్‌పుట్:

కనుగొన్నారు

నమూనాగా, ప్రపంచం, లక్ష్యంలో కనుగొనబడింది. [[మరియు ముందు]] తర్వాత డీలిమిటింగ్ స్పేస్ నిర్వహించబడిందని గమనించండి.

సరళి

పై కోడ్‌లో, కోట్స్‌లో ‘ప్రపంచం’ అనేది రిజెక్స్ అయితే ప్రపంచమే నమూనా. ఇది సూటిగా ఉండే నమూనా. అయితే, చాలా నమూనాలు అంత సులభం కాదు. నమూనా అనేది ఒక సబ్‌స్ట్రింగ్ యొక్క లక్షణం. కాబట్టి, బాష్ నమూనా కొన్ని మెటాఛార్టర్‌లను ఉపయోగిస్తుంది. మెటా కారెక్టర్ అనేది ఇతర పాత్రల గురించిన పాత్ర. ఉదాహరణల కోసం, బాష్ సరళి కింది మెటా కారెక్టర్లను ఉపయోగిస్తుంది:

^ $ . * +? () [] {} |

రెగ్యులర్ ఎక్స్‌ప్రెషన్‌ను కండిషన్ డబుల్ బ్రాకెట్స్‌లో కూడా టైప్ చేయవచ్చు. కానీ అది కోట్లలో ఉండవలసిన అవసరం లేదు. కాబట్టి, ఈ సందర్భంలో, ఇది అక్షరాలా, ఒక నమూనా.

అక్షర తరగతులు

చదరపు బ్రాకెట్లలో

కింది కోడ్ యొక్క అవుట్‌పుట్ కనుగొనబడింది, అంటే మ్యాచ్ జరిగింది:

p='పిల్లి గదిలోకి వచ్చింది.'
ఉంటే [[ $ str= ~[cbr]వద్ద]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
ఉంటుంది

నమూనా, [cbr] వద్ద సరిపోలిన పిల్లి ఉంది, ఇది 'c' తో మొదలవుతుంది మరియు ఇది కొనసాగుతుంది మరియు వద్ద ముగుస్తుంది. [cbr] అంటే, 'c' లేదా 'b' లేదా 'r' తో సరిపోల్చండి.

కింది కోడ్ యొక్క అవుట్‌పుట్ కనుగొనబడింది, అంటే మ్యాచ్ జరిగింది:

p='గబ్బిలం ఛాంబర్‌లోకి వచ్చింది.'
ఉంటే [[ $ str= ~[cbr]వద్ద]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
ఉంటుంది

నమూనా, [cbr] వద్ద సరిపోయే బ్యాట్ ఉంది, ఇది 'b' తో ప్రారంభమవుతుంది, మరియు ఇది కొనసాగుతుంది మరియు వద్ద ముగుస్తుంది. [cbr] అంటే, 'c' లేదా 'b' లేదా 'r' తో సరిపోల్చండి.

కింది కోడ్ యొక్క అవుట్‌పుట్ కనుగొనబడింది, అంటే మ్యాచ్ జరిగింది:

p='ఎలుక గదిలోకి వచ్చింది.'
ఉంటే [[ $ str= ~[cbr]వద్ద]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
ఉంటుంది

నమూనా, [cbr] వద్ద ఎలుక సరిపోలింది, ఇది 'r' తో మొదలవుతుంది మరియు ఇది కొనసాగుతుంది మరియు వద్ద ముగుస్తుంది.

పైన పేర్కొన్న కోడ్ నమూనాలలో, ప్రోగ్రామర్‌కు టార్గెట్ స్ట్రింగ్‌లో పిల్లి లేదా గబ్బిలం లేదా ఎలుక ఉందో లేదో తెలియదు. కానీ, సబ్‌స్ట్రింగ్ 'సి' లేదా 'బి' లేదా 'ఆర్' తో మొదలవుతుందని, తర్వాత కొనసాగుతుంది మరియు వద్ద ముగుస్తుందని అతనికి తెలుసు. నమూనాలోని స్క్వేర్ బ్రాకెట్‌లు లక్ష్యంలోని ఇతరులకు సంబంధించి ఒక స్థితిలో ఒక అక్షరంతో సరిపోయేలా విభిన్నమైన అక్షరాలను అనుమతిస్తాయి. కాబట్టి, చదరపు బ్రాకెట్లలో అక్షరాల సమితి ఉంటుంది, వీటిలో ఒకటి సబ్‌స్ట్రింగ్ కోసం సరిపోతుంది. చివరగా, ఇది సరిపోలిన పూర్తి సబ్‌స్ట్రింగ్.

పాత్రల పరిధి

పై కోడ్‌లో [cbr] ఒక తరగతి. 'C' లేదా 'b' లేదా 'r' ఒకే అక్షరానికి అనుగుణంగా ఉన్నప్పటికీ, ఆ వెంటనే అనుసరించనట్లయితే, ఆ నమూనా దేనికీ సరిపోలదు.

సరే, ఒక క్లాస్‌గా ఏర్పడే కొన్ని పరిధులు ఉన్నాయి. ఉదాహరణకు, 0 నుండి 9 అంకెలు తరగతి, [0-9] తో 0 మరియు 9 చేర్చబడ్డాయి. చిన్న అక్షరం 'a' నుండి 'z' 'a' మరియు 'z' లతో కూడిన తరగతి [a-z] ను రూపొందిస్తుంది. పెద్ద అక్షరం 'A' నుండి 'Z' 'A' మరియు 'Z' తో కూడిన తరగతి [A-Z] ని రూపొందిస్తుంది. తరగతి నుండి, స్ట్రింగ్‌లోని ఒక అక్షరానికి సరిపోయే అక్షరాలలో ఇది ఒకటి.

కింది కోడ్ మ్యాచ్‌ని ఉత్పత్తి చేస్తుంది:

ఉంటే [[ 'ID8id'= ~[0-9] ]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
ఉంటుంది

ఈసారి లక్ష్యం పరిస్థితిలో అక్షర స్ట్రింగ్. 8, ఇది పరిధిలోని సంభావ్య సంఖ్యలలో ఒకటి, [0-9], స్ట్రింగ్‌లోని 8 తో సరిపెట్టుకుంది, 'ID8id'. పై కోడ్ దీనికి సమానం:

ఉంటే [[ 'ID8id'= ~[0123456789] ]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
ఉంటుంది

ఇక్కడ, సాధ్యమయ్యే అన్ని సంఖ్యలు నమూనాలో వ్రాయబడ్డాయి, కాబట్టి హైఫన్ లేదు.

కింది కోడ్‌లో, ఒక మ్యాచ్ పొందబడింది:

ఉంటే [[ 'ID8iD'= ~[a-z] ]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
ఉంటుంది

పరిధిలోని చిన్న అక్షరం 'i', [a-z] మరియు లక్ష్య స్ట్రింగ్ యొక్క చిన్న అక్షరం 'i8iD' మధ్య మ్యాచ్ ఉంటుంది.

గుర్తుంచుకోండి: పరిధి ఒక తరగతి. తరగతి పెద్ద నమూనాలో భాగం కావచ్చు. కాబట్టి ఒక నమూనాలో, టెక్స్ట్ ముందు మరియు/లేదా తరగతి తర్వాత ఉంటుంది. కింది కోడ్ దీనిని వివరిస్తుంది:

ఉంటే [[ 'ID8id ఐడెంటిఫైయర్'= ~ ID[0-9]id ]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
ఉంటుంది

అవుట్‌పుట్: కనుగొనబడింది. నమూనా నుండి 'ID8id' లక్ష్యం స్ట్రింగ్‌లో 'ID8id' తో సరిపోలింది.

నిరాకరణ

కింది కోడ్ నుండి సరిపోలిక పొందబడలేదు:

ఉంటే [[ '0123456789101112'= ~[0-9] ]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
లేకపోతే
బయటకు విసిరారుదొరకలేదు
ఉంటుంది

అవుట్‌పుట్:

దొరకలేదు

శ్రేణికి ముందు the లేకుండా, చదరపు బ్రాకెట్లలో, శ్రేణి యొక్క సున్నా లక్ష్య స్ట్రింగ్ యొక్క మొదటి సున్నాకి సరిపోతుంది. కాబట్టి, a శ్రేణి ముందు (లేదా ఐచ్ఛిక అక్షరాలు) క్లాస్‌ని తిరస్కరిస్తుంది.

కింది కోడ్ ఒక మ్యాచ్‌ని ఉత్పత్తి చేస్తుంది ఎందుకంటే షరతు ఇలా చదువుతుంది: లక్ష్యంలో ఎక్కడైనా సంఖ్య కాని అక్షరంతో సరిపోలండి:

ఉంటే [[ 'ABCDEFGHIJ'= ~[0-9] ]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
లేకపోతే
బయటకు విసిరారుదొరకలేదు
ఉంటుంది

కాబట్టి అవుట్‌పుట్: కనుగొనబడింది.

[^0-9] అంటే అంకెలు కానిది, కాబట్టి [^0-9] అనేది [0-9] యొక్క తిరస్కరణ.

[^a-z] అంటే చిన్న అక్షరం కాని అక్షరం, కాబట్టి [^a-z] అనేది [a-z] యొక్క తిరస్కరణ.

[^A-Z] అంటే పెద్ద అక్షరం కాని అక్షరం, కాబట్టి [^A-Z] అనేది [A-Z] యొక్క తిరస్కరణ.

ఇతర నిరాకరణలు అందుబాటులో ఉన్నాయి.

నమూనాలో కాలం (.)

నమూనాలోని కాలం (.) తనతో సహా ఏదైనా అక్షరానికి సరిపోతుంది. కింది కోడ్‌ని పరిగణించండి:

ఉంటే [[ '6759WXY.A3'= ~ 7.9W.Y.A]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
ఉంటుంది

ఇతర అక్షరాలు సరిపోలడం వలన కోడ్ యొక్క అవుట్‌పుట్ కనుగొనబడింది. ఒక చుక్క '5' తో సరిపోతుంది; మరొక చుక్క 'X' కి సరిపోతుంది; మరియు చివరి చుక్క ఒక చుక్కతో సరిపోతుంది.

సరిపోలే ప్రత్యామ్నాయం

లక్ష్య వాక్యం కోసం ఈ వాక్యాన్ని పరిగణించండి:

బోనులో వివిధ రకాల పక్షులు ఉన్నాయి.

ఈ టార్గెట్‌లో పావురం లేదా నెమలి లేదా డేగ ఉందా అని ఎవరైనా తెలుసుకోవాలనుకోవచ్చు. కింది కోడ్‌ని ఉపయోగించవచ్చు:

p='బోనులో వివిధ రకాల నెమళ్లు ఉన్నాయి.'
ఉంటే [[ $ str= ~ పావురం|నెమలి|డేగ]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
లేకపోతే
బయటకు విసిరారుదొరకలేదు
ఉంటుంది

అవుట్‌పుట్ కనుగొనబడింది. ప్రత్యామ్నాయ మెటా కారెక్టర్, | ఉపాధి పొందారు. రెండు, మూడు, నాలుగు మరియు మరిన్ని ప్రత్యామ్నాయాలు ఉండవచ్చు. ఈ కోడ్‌లో సరిపోలినది ‘నెమలి’.

సమూహము

కింది నమూనాలో, అక్షరాలను సమూహపరచడానికి కుండలీకరణాలు ఉపయోగించబడ్డాయి:

ఒక వేదిక (నర్తకి)

ఇక్కడ సమూహం మెటాఛార్టర్స్ (మరియు) చుట్టూ ఉన్న స్టేజ్ డ్యాన్సర్. (నర్తకి) ఒక ఉప సమూహం, ఒక వేదిక (నర్తకి) మొత్తం సమూహం. కింది వాటిని పరిగణించండి:

(నర్తకి అద్భుతం)

ఇక్కడ, ఉప సమూహం లేదా సబ్‌స్ట్రింగ్, నర్తకి అద్భుతంగా ఉంది.

సాధారణ భాగాలతో సబ్‌స్ట్రింగ్స్

వాటాదారు అంటే వ్యాపారంపై ఆసక్తి ఉన్న వ్యక్తి. ఒక వెబ్‌సైట్, stake.com తో వ్యాపారాన్ని ఊహించండి. కింది లక్ష్య స్ట్రింగ్‌లలో ఒకటి కంప్యూటర్‌లో ఉందని ఊహించండి:

వెబ్‌సైట్, stake.com వ్యాపారం కోసం .;

వాటాదారు ఉంది .;

వాటాదారుడు stake.com కోసం పని చేస్తాడు .;

ఈ స్ట్రింగ్‌లలో ఏదైనా లక్ష్యంగా ఉండనివ్వండి. ప్రోగ్రామర్ స్టకే.కామ్ లేదా వాటాదారు ఏ లక్ష్య స్ట్రింగ్‌లో ఉన్నాడో తెలుసుకోవాలనుకోవచ్చు. అతని నమూనా ఇలా ఉంటుంది:

stake.com | వాటాదారు

ప్రత్యామ్నాయం ఉపయోగించి.

వాటా రెండు పదాలలో రెండుసార్లు టైప్ చేయబడింది. నమూనాను కింది విధంగా టైప్ చేయడం ద్వారా దీనిని నివారించవచ్చు:

వాటా (.com | హోల్డర్)

.com | హోల్డర్ ఈ సందర్భంలో ఉప సమూహం.

గమనిక: ఈ సందర్భంలో ప్రత్యామ్నాయ పాత్ర యొక్క ఉపయోగం. stake.com లేదా వాటాదారు ఇప్పటికీ శోధించబడతారు. కింది కోడ్ యొక్క అవుట్‌పుట్ కనుగొనబడింది:

p='వెబ్‌సైట్, stake.com వ్యాపారం కోసం.'
ఉంటే [[ $ str= ~ వాటా(.తో|హోల్డర్) ]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
ఉంటుంది

ఇక్కడ సరిపోలే సబ్‌స్ట్రింగ్ stake.com.

BASH_REMATCH ముందుగా నిర్వచించిన శ్రేణి

BASH_REMATCH అనేది ముందుగా నిర్వచించబడిన శ్రేణి. ఒక నమూనా సమూహాలను కలిగి ఉందని ఊహించండి. మొత్తం సమూహం సరిపోలింది, ఈ శ్రేణి యొక్క ఇండెక్స్ 0 కోసం సెల్‌లోకి వెళుతుంది. సరిపోలిన మొదటి ఉప సమూహం, ఇండెక్స్ 1 కోసం సెల్‌లోకి వెళుతుంది; సరిపోలిన రెండవ ఉప సమూహం, ఇండెక్స్ 2 కోసం సెల్‌లోకి వెళుతుంది మరియు మొదలైనవి. ఈ శ్రేణిని ఎలా ఉపయోగించాలో కింది కోడ్ చూపుతుంది:

p='స్టేజ్ డ్యాన్సర్ వచ్చారు.'
ఉంటే [[ $ str= ~ దశ (నర్తకి) ]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
ఉంటుంది

కోసంiలో $ {! BASH_REMATCH [@]};చేయండి
printf '$ {BASH_REMATCH [i]}, '
పూర్తి
బయటకు విసిరారు

అవుట్‌పుట్:

కనుగొన్నారు
స్టేజ్ డ్యాన్సర్, డ్యాన్సర్,

మొత్తం బృందం స్టేజ్ డ్యాన్సర్. ఒకే ఒక ఉప సమూహం ఉంది, ఇది నర్తకి.

గమనిక: నమూనాలోని ఖాళీ తప్పించుకోబడింది.

అప్పర్/లోయర్ కేస్ ఇండిపెండెన్స్ మ్యాచింగ్

పైన వివరించిన విధంగా సరిపోలిక అనేది కేస్ సెన్సిటివ్. కేసు స్వతంత్రంగా సరిపోలవచ్చు. ఇది క్రింది కోడ్‌లో వివరించబడింది:

దుకాణాలు -ఎస్nocasematch

p='మాకు మంచి సంగీతం ఇష్టం.'
ఉంటే [[ $ str= ~ గూడ్]];అప్పుడు
బయటకు విసిరారుకనుగొన్నారు
ఉంటుంది

దుకాణాలు -ఉnocasematch

అవుట్‌పుట్: కనుగొనబడింది. నమూనా, గూడ్. సబ్‌స్ట్రింగ్ సరిపోలినది 'మంచిది'. కోడ్ సెగ్మెంట్ ప్రారంభంలో nocasematch ఎంపిక ఎలా ప్రారంభించబడిందో మరియు కోడ్ సెగ్మెంట్ చివరిలో డిసేబుల్ చేయబడిందో గమనించండి.

స్ట్రింగ్ యొక్క పొడవు

స్ట్రింగ్ యొక్క పొడవును పొందడానికి వాక్యనిర్మాణం:

$ {#PARAMETER}

ఉదాహరణ:

p='మాకు మంచి సంగీతం ఇష్టం.'
బయటకు విసిరారు $ {# str}

అవుట్‌పుట్: 19.

స్ట్రింగ్ తగ్గింపు

స్ట్రింగ్ తగ్గింపు కోసం వాక్యనిర్మాణాలు:

$ {పారామీటర్: OFFSET}
$ {పారామీటర్: ఆఫ్‌సెట్: పొడవు

OFFSET కోసం లెక్కింపు సున్నా నుండి ప్రారంభమవుతుంది.

కింది ఉదాహరణ స్ట్రింగ్‌లోని మొదటి 11 అక్షరాలను ఎలా తొలగించాలో చూపుతుంది:

p='నేను ఎల్లప్పుడూ మంచి సంగీతానికి నాట్యం చేస్తాను.'
బయటకు విసిరారు $ {str: 10}

అవుట్‌పుట్:

మంచి సంగీతానికి యాన్స్.

పొడవు కోసం లెక్కింపు, తదుపరి అక్షరం నుండి ప్రారంభమవుతుంది. కింది కోడ్ స్ట్రింగ్‌లోని భాగాన్ని ఎలా అనుమతించవచ్చో చూపుతుంది:

p='నేను ఎల్లప్పుడూ మంచి సంగీతానికి నాట్యం చేస్తాను.'
బయటకు విసిరారు $ {str: 10: 6}

అవుట్‌పుట్:

యాన్స్ టి

మొదటి 11 అక్షరాలు తొలగించబడ్డాయి; తదుపరి 6 అక్షరాలు అనుమతించబడ్డాయి మరియు మిగిలిన అక్షరాలు స్వయంచాలకంగా తీసివేయబడతాయి.

శోధించండి మరియు భర్తీ చేయండి

సబ్‌స్ట్రింగ్ కనుగొనబడినప్పుడు, దానిని మరొక సబ్‌స్ట్రింగ్‌తో భర్తీ చేయవచ్చు. దీని కోసం వాక్యనిర్మాణాలు:

ఎక్కడ=$ {పారామెటర్/ప్యాటర్న్/రీప్లేస్మెంట్}
ఎక్కడ=$ {పారామీటర్ // ప్యాటర్న్/రీప్లేస్‌మెంట్}
ఎక్కడ=$ {PARAMETER/PATTERN}
ఎక్కడ=$ {పారామెటర్ // ప్యాటర్న్}

సింగిల్ ఫార్వర్డ్ స్లాష్‌తో మొదటి సింటాక్స్ కోసం, మొదటి మ్యాచ్ మాత్రమే భర్తీ చేయబడుతుంది. ఉదాహరణ:

p='గదిలో ఎలుక, గబ్బిలం మరియు పిల్లి ఉన్నాయి.'
కుడి=$ {str/[cbr] వద్ద/పెద్ద ఆవు}
బయటకు విసిరారు $ str
బయటకు విసిరారు $ ret

అవుట్‌పుట్:

గదిలో ఎలుక, గబ్బిలం మరియు పిల్లి ఉన్నాయి.
చాంబర్‌లో ఒక పెద్ద ఆవు, గబ్బిలం మరియు పిల్లి ఉన్నాయి.

డబుల్ ఫార్వర్డ్ స్లాష్‌లతో రెండవ వాక్యనిర్మాణం కోసం, మ్యాచ్ యొక్క అన్ని సంఘటనలు భర్తీ చేయబడతాయి. ఉదాహరణ:

p='గదిలో ఎలుక, గబ్బిలం మరియు పిల్లి ఉన్నాయి.'
కుడి=$ {str // [cbr] వద్ద/పెద్ద ఆవు}
బయటకు విసిరారు $ str
బయటకు విసిరారు $ ret

అవుట్‌పుట్:

గదిలో ఎలుక, గబ్బిలం మరియు పిల్లి ఉన్నాయి.
గదిలో ఒక పెద్ద ఆవు, ఒక పెద్ద ఆవు మరియు ఒక పెద్ద ఆవు ఉన్నాయి.

సింగిల్ ఫార్వర్డ్ స్లాష్‌తో మూడవ వాక్యనిర్మాణం కోసం, మొదటి మరియు ఏకైక మ్యాచ్‌కు ప్రత్యామ్నాయం లేదు.

అలాగే, కనుగొనబడిన మొదటి సబ్‌స్ట్రింగ్ తొలగించబడుతుంది. ఉదాహరణ:

p='గదిలో ఎలుక, గబ్బిలం మరియు పిల్లి ఉన్నాయి.'
కుడి=$ {str/[cbr] వద్ద}
బయటకు విసిరారు $ str
బయటకు విసిరారు $ ret

డబుల్ ఫార్వర్డ్ స్లాష్‌లతో నాల్గవ వాక్యనిర్మాణం కోసం, అన్ని మ్యాచ్‌లకు ప్రత్యామ్నాయం లేదు. అలాగే, కనుగొనబడిన అన్ని సబ్‌స్ట్రింగ్‌లు తొలగించబడతాయి. ఉదాహరణ:

p='గదిలో ఎలుక, గబ్బిలం మరియు పిల్లి ఉన్నాయి.'
కుడి=$ {str // [cbr] వద్ద}
బయటకు విసిరారు $ str
బయటకు విసిరారు $ ret

అవుట్‌పుట్:

గదిలో ఎలుక, గబ్బిలం మరియు పిల్లి ఉన్నాయి.
చాంబర్‌లో a, a మరియు a ఉన్నాయి.

ముగింపు

బాష్‌లో స్ట్రింగ్‌లో సబ్‌స్ట్రింగ్ ఉందో లేదో తనిఖీ చేయడానికి, ప్యాటర్న్ మ్యాచింగ్ ఉపయోగించాలి. ప్యాటర్న్ మ్యాచింగ్ కండిషన్ డబుల్ బ్రాకెట్లలో మాత్రమే జరగదు, [[. . . ]]. ఇది పరామితి విస్తరణలో కూడా చేయవచ్చు, దాని $ {తో. . .}. పారామీటర్ విస్తరణతో, ఇండెక్స్‌ల ద్వారా సబ్‌స్ట్రింగ్ పొందడం సాధ్యమవుతుంది.

ఈ వ్యాసంలో సమర్పించినవి ప్యాటర్న్ మ్యాచింగ్‌లో అత్యంత క్లిష్టమైన అంశాలు. ఇంకా చాలా ఉన్నాయి! అయితే, రీడర్ తదుపరి అధ్యయనం చేయవలసినది, ఫైల్ నేమ్ విస్తరణ.