एक चर से सभी रिक्त स्थान, टैब, newlines, आदि को हटाना?


25

यह वह त्रुटि है जो मुझे मिल रही है और यह एक चर के कारण विफल हो रही है जिसका मान 2 माना जाता है (मैं इस का उपयोग करके प्राप्त कर रहा हूं select * from tabel)। मुझे उस चर में स्थान मिल रहा है।

+ 0 != 
         2
./setjobs[19]: 0:  not found.

मैं उन सभी रिक्त स्थान या उस चर से एक नई पंक्ति कैसे निकालूं? कर सकते हैं tr, sedया कुछ भी मदद?

यह मैं क्या कर रहा हूँ:

set_jobs_count=$(echo  "set heading off;
      select count(*) from oppar_db
      where ( oppar_db_job_name, oppar_db_job_rec ) in ($var) ;" | \
  sqlplus -s ${OP_ORA_USER}/${OP_ORA_PASS}@$OPERATIONAL_DB_NAME)

यह सुझाव के अनुसार काम करता है:

| sed 's/[[:space:]]//g'

लेकिन मुझे अभी भी एक मूल्य प्राप्त होता है जैसे:

  set_jobs_count=
  2

1
आप चयन स्टेटमेंट में एक स्ट्रिंग को इंट में डाल सकते हैं। यह कैसे किया जाता है डेटाबेस, साइबेस, ओरेकल, MySQL, आदि पर निर्भर करता है
bsd

1
मैं ऐसा कैसे कर सकता हूं, मेरे पास
ori

1
sed का उपयोग करके यह | sed 's/[[:space:]]//g'
व्हॉट्सएप

धन्यवाद कुछ हद तक काम करता है, लेकिन फिर भी चर के मूल्य आते हैं जैसेset_jobs_count= 2
14:24

शेल के आधार पर, आप इसे बिना किसी बाहरी उपकरण के करने में सक्षम हो सकते हैं। देखें stackoverflow.com/a/3352015/587717
Edd स्टील

जवाबों:


38

आप उपयोग कर सकते हैं tr, जैसे कि tr -d '\040\011\012\015'रिक्त स्थान, टैब, कैरिज रिटर्न और न्यूलाइन्स को हटा देगा।


3
वहाँ का उपयोग \040\011\012\015करने का एक फायदा है [:space:]?
निक

बहुत पुराने यूनिक्स संस्करणों के साथ पोर्टेबिलिटी एकमात्र कारण है जिसके बारे में मैं सोच सकता हूं --- काफी पुराना है कि UNIX संस्करण POSIX.1 से पहले है ।
काइल जोन्स

1
%आउटपुट के अंत में यह चरित्र के साथ क्या है ? लगता है कि यह किसी तरह का लिनक्स है जो मुझे बता रहा है कि आउटपुट बंद हो गया है?
atripes

4

Ksh, bash या zsh में:

set_jobs_count=…
set_jobs_count=${set_jobs_count//[[:space:]]/}

किसी भी शेल में, आप अग्रणी और अनुगामी व्हाट्सएप को हटा सकते हैं और सभी मध्यवर्ती व्हाट्सएप को एक ही स्थान पर सामान्य कर सकते हैं जैसे:

set +f
set -- $set_jobs_count
set_jobs_count=$*
set -f

set +fग्लोबिंग बंद कर देता है; यदि आप जानते हैं कि डेटा में कोई भी वर्ण नहीं है \[?*, तो आप इसे छोड़ सकते हैं।


दिलचस्प जवाब +1
15

@BinaryZebra ग्लोबिंग पर होता है set -- $set_jobs_countset_jobs_count=$*के बराबर है set_jobs_count="$@"के बाद से $*और $@जब गैर उद्धृत और एक काम के दाएँ हाथ की ओर एक डबल-कोटेड स्ट्रिंग के रूप में एक ही तरह से पार्स किया गया है केवल बराबर हैं।
गिल्स एसओ- बुराई को रोकना '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.