2012-10-16 13 views
6

द्वारा एक स्ट्रिंग से एक स्थान को हटाने से मैं अजीब का उपयोग करके स्ट्रिंग से नाम और अंतिम नाम के बीच स्थित एक स्थान को कैसे हटा सकता हूं? अधिकांश उदाहरण कमांड लाइन से डेटा को रीडायरेक्ट करने के बारे में हैं, लेकिन मुझे एक अजीब स्क्रिप्ट के अंदर एक स्ट्रिंग में हेरफेर करने की आवश्यकता है।अजीब

Convert इस:

"steve john" 

रहे हैं:

"stevejohn" 

मैं एक स्ट्रिंग चर जो मैं इनपुट करने के लिए उपयोगकर्ता से कहा कि एक awk स्क्रिप्ट के अंदर है। मुझे रिक्त स्थान को हटाने की जरूरत है।

+1

'awk '{प्रिंट $ 1 $ 2}' filename' या' गूंज "हाय gh" | awk '{print $ 1 $ 2}' ' –

+0

यदि आपके पास खोल स्क्रिप्ट बनाने के बारे में कोई जवाब है, तो कृपया अपना प्रश्न संपादित करने के लिए अपना प्रश्न संपादित करें। –

उत्तर

13

gsub आपका मित्र है। निम्न आदेश मूल रूप से एक नियमित अभिव्यक्ति (इस मामले में एक एकल स्थान) का वैश्विक प्रतिस्थापन करता है, इसे $0 (संपूर्ण पंक्ति) पर, एक खाली स्ट्रिंग के साथ बदल देता है।

pax> echo "steve john" | awk '{ gsub (" ", "", $0); print}' 
stevejohn 

आप एक उपयोगकर्ता द्वारा एक इनपुट सहित, किसी भी लक्ष्य का उपयोग कर सकते हैं:

pax> awk 'BEGIN {getline xyzzy ; gsub(" ","", xyzzy) ; print xyzzy}' 
hello there my name is pax 
hellotheremynameispax 
3

उपयोग sed:

$ echo "steve john" | sed 's/ //g' 
stevejohn 

आप awk उपयोग करना आवश्यक है, ऐसा करते हैं:

$ echo "steve john" | gawk '{print $1 $2}' 
stevejohn 

संपादित करें:

एक bash स्क्रिप्ट के अंदर, आप यह कर सकते हैं:

s="steve john" # user input 
t=$(echo $s | gawk '{print $1 $2}') 
echo $t 
+0

मेरे पास एक स्ट्रिंग वेरिएबल है जिसे मैंने उपयोगकर्ता को एक अजीब स्क्रिप्ट के अंदर इनपुट करने के लिए कहा था। मुझे रिक्त स्थान – femchi

+0

को हटाने की आवश्यकता है कृपया मेरा संपादित उत्तर देखें। –

+0

अपने चर ("$ s" $ s नहीं) को उद्धृत करना याद रखें और आप वास्तव में बाहरी कमांड को बैश में करने के लिए नहीं कहेंगे, आप शैल बिल्टिन का उपयोग करेंगे: s = "स्टीव जॉन"; echo "$ {s //}" stevejohn –

1
echo "john smith aaa " |\ 
awk 'BEGIN {FS=" "; OFS=""} {for(i=1;i<=NF;++i) {out = out OFS $i}} END {print out;}' 
+0

या आप "sed" कमांड का उपयोग कर सकते हैं। sed आमतौर पर इनपुट से स्ट्रिंग को हटाने या बदलने के लिए प्रयोग किया जाता है। – trillions