आपको इसके लिए echo
कमांड की आवश्यकता नहीं है , बस यहां स्ट्रिंग का उपयोग करें:
text=$(tr -d ' ' <<< "$text")
बस जिज्ञासा के लिए मैंने जाँच की कि विभिन्न उपकरणों के लिए इस तरह के एक तुच्छ कार्य में कितना समय लगता है। यहां परिणाम सबसे धीमे से सबसे तेज क्रमबद्ध किए गए हैं:
abc="some text with spaces"
$ time (for i in {1..1000}; do def=$(echo $abc | tr -d ' '); done)
0.76s user 1.85s system 52% cpu 4.976 total
$ time (for i in {1..1000}; do def=$(awk 'gsub(" ","")' <<< $abc); done)
1.09s user 2.69s system 88% cpu 4.255 total
$ time (for i in {1..1000}; do def=$(awk '$1=$1' OFS="" <<< $abc); done)
1.02s user 1.75s system 69% cpu 3.968 total
$ time (for i in {1..1000}; do def=$(sed 's/ //g' <<< $abc); done)
0.85s user 1.95s system 76% cpu 3.678 total
$ time (for i in {1..1000}; do def=$(tr -d ' ' <<< $abc); done)
0.73s user 2.04s system 85% cpu 3.244 total
$ time (for i in {1..1000}; do def=${abc// /}; done)
0.03s user 0.00s system 59% cpu 0.046 total
शुद्ध शेल ऑपरेशन निश्चित रूप से सबसे तेज है जो आश्चर्यजनक नहीं है, लेकिन क्या वास्तव में प्रभावशाली है कि यह 100 गुना अधिक तेज है फिर सबसे धीमी कमान है!