मैं इससे कैसे मिलता हूं:
randomcollege-nt\user90
इसके लिए:
user90
का उपयोग कर sed
?
sed
यात्रा के लिए ट्यूटोरियल : grymoire.com/Unix/Sed.html
मैं इससे कैसे मिलता हूं:
randomcollege-nt\user90
इसके लिए:
user90
का उपयोग कर sed
?
sed
यात्रा के लिए ट्यूटोरियल : grymoire.com/Unix/Sed.html
जवाबों:
मैं grep
देखने के लिए एक सरल का उपयोग करेगा user90
:
$ echo "randomcollege-nt\user90" | grep -o user90
user90
यदि user90 स्थिर नहीं है, तो इस कमांड को प्राथमिकता दें:
$ echo "randomcollege-nt\user90" | grep -oP '(?<=randomcollege-nt\\)\w+'
user90
अंत sed
में फ़ाइल को जगह में संपादित करने के लिए उपयोग करना:
$ sed -ri 's/randomcollege-nt\\(user[0-9]+)/\1/' my_file
या सभी संभावित उपयोगकर्ता खातों से मिलान करने के लिए:
$ sed -ri 's/randomcollege-nt\\(\w+)/\1/' my_file
grep -F
पूरी स्ट्रिंग हूं ।
आप किसी domain\username
स्ट्रिंग से उपयोगकर्ता नाम निकालने के लिए कुछ पाठ पार्स कर रहे हैं , जो कि विंडोज से सबसे अधिक संभावना है। उपर्युक्त अधिकांश उत्तर केवल आपके विशिष्ट उदाहरण स्ट्रिंग को संबोधित कर रहे हैं।
ऐसा करने का सबसे अच्छा तरीका है कि जो कुछ भी आता है उसे निकालने के लिए sed में regex का उपयोग करना \
। यहां बताया गया है कि आप इसे कैसे करेंगे:
sed 's|.*\\\(.*\)|\1|'
जो .*
बैकस्लैश तक सब कुछ ( ) से मेल खाएगा (यहां, हम इसे बच रहे हैं, इसलिए यह है \\
), फिर बैकस्लैश ( .*
) के बाद सब कुछ मैच करें , लेकिन इसे एक कैप्चर ग्रुप (यानी इसके चारों ओर कोष्ठक लपेटें), लेकिन हमें भी बचना होगा उन्हें, इसलिए \(.*\)
)। अब जब हमारे पास \
एक कैप्चर समूह के रूप में स्ट्रिंग के बाद जो कुछ भी आता है , हम इसे संदर्भित करके प्रिंट करते हैं\1
।
आप उपरोक्त sed
कमांड का उपयोग किसी भी डोमेन नाम के साथ कर सकते हैं , जरूरी नहीं randomcollege-nt
।
$ echo "randomcollege-nt\user90" | sed 's|.*\\\(.*\)|\1|'
user90
$ echo "domain\username" | sed 's|.*\\\(.*\)|\1|'
username
$ echo "anydomainname\roboman1723" | sed 's|.*\\\(.*\)|\1|'
roboman1723
एक और sed
:
$ echo "randomcollege-nt\user90" | LC_ALL=C sed -e 's/.*\\//'
user90
या POSIXly:
$ a='randomcollege-nt\user90'
$ printf '%s\n' "${a##*\\}"
user90
sh
विशेषता है। pubs.opengroup.org/onlinepubs/009604599/utilities/…
मुझे पता है कि आप sed का उपयोग करना चाहते हैं, लेकिन मैं कुछ अलग उपयोग करूँगा ...
echo "randomcollege-nt\user90" | cut -d'\' -f2
क्या यह सवाल है?
$ echo randomcollege-nt\user90| sed -e s,randomcollege-nt\,,
user90
अगर स्टिंग रैंडमकलज-एनटी के विपरीत नहीं है, तो ऊपर / नीचे के awk कमांड का उपयोग करें।
/user90
नहीं मिलता हैuser90
बल्कि आप "user90" को फ़िल्टर करने के लिए 'awk' का उपयोग करते हैं:
echo "randomcollege-nt\user90" | awk -F\\ {'print $2'}
यह सरल grep कमांड काम करेगा,
$ echo 'randomcollege-nt\user90' | grep -oP '[^\\]*$'
user90
sed
एक विशिष्ट चरित्र से पहले एक स्ट्रिंग में सब कुछ हटाने के साथ (डबल ब्रैकेट में परिभाषित करें [विशिष्ट चार])।
echo "randomcollege-nt\user90" | sed 's/.*[\]//'
व्हाट्सएप चरित्र के साथ चार ( .*[\]
) वर्ण से पहले सभी का मतलब है \
( //
)
यदि आपके पास कोई फ़ाइल है और आप इस तरह कमांड -i
में उपयोग ध्वज को प्रतिस्थापित करना चाहते हैं sed
:
sed -i 's/.*[\]//' /path/to/FileName
मूल प्रश्न पूछा गया sed
, लेकिन मैं देख रहा हूं कि विकल्प यहां लोकप्रिय हैं।
यदि आप बैश का उपयोग कर रहे हैं, तो पैरामीटर विस्तार सबसे सरल है:
ORIGIN='randomcollege-nt\user90'
echo "${ORIGIN#*\\}"
यदि आप संभावित रूप से एक से अधिक बैकस्लैश की उम्मीद कर रहे हैं, तो हैश के संकेतों को दोगुना करें:
echo "${ORIGIN##*\\}"
अधिक जानकारी के लिए, man bash
और खोजें Parameter Expansion
।
यदि कोई व्यक्ति # server_tokens off;
स्वत: देव-ऑप्स के साथ मदद करने के लिए स्वत: nginx से एक टिप्पणी को हटाने की कोशिश कर रहा है :
sudo sed -ri 's/#\s(server_tokens off;)/\1/' /etc/nginx/nginx.conf
।
उबंटू 16.04 LTS पर nginx / 1.12.1 के लिए परीक्षण और काम कर रहा है। एनजीआईएनएक्स को लॉक करने से संबंधित उत्तर यहां सर्वर टोकन बंद करके ।
man the_command_name
और आपको कमांड के लिए एक उपयोगी निर्देश मैनुअल मिलेगा। आप www.google.com पर भी जा सकते हैं और "command_name ट्यूटोरियल" में टाइप कर सकते हैं और आपको बहुत सारे चरण-दर-चरण मार्गदर्शिकाएँ मिलेंगी।