2013-11-25 12 views
5

मैं एक स्क्रिप्ट है किप्रतिस्थापन --output-सीमांकक

cut -d',' -f- --output-delimiter=$'\n' 

उपयोग कर रहा था जैसे के लिए RHEL 5 में प्रत्येक आदेश अलग मूल्य के लिए एक नई पंक्ति जोड़ने के लिए, बनाया

[root]# var="hi,hello how,are you,doing" 
[root]# echo $var 
hi,hello how,are you,doing 
[root]# echo $var|cut -d',' -f- --output-delimiter=$'\n' 
hi 
hello how 
are you 
doing 

लेकिन दुर्भाग्य से जब मैं Solaris 10 में एक ही आदेश चला, यह सब :(पर काम नहीं करता है!

bash-3.00# var="hi,hello how,are you,doing" 
bash-3.00# echo $var 
hi,hello how,are you,doing 
bash-3.00# echo $var|cut -d',' -f- --output-delimiter=$'\n' 
cut: illegal option -- output-delimiter= 

usage: cut -b list [-n] [filename ...] 
     cut -c list [filename ...] 
     cut -f list [-d delim] [-s] [filename] 

मैं 'काट' के लिए आदमी पृष्ठ की जाँच की और अफसोस कोई वहाँ में '--output-सीमांकक'!

तो कैसे मैं Solaris 10 (बैश)? मुझे लगता है कि awk एक समाधान हो सकता है में इस लक्ष्य को हासिल है, लेकिन मैं ठीक से विकल्पों को फ्रेम करने के लिए असमर्थ हूँ।

नोट: कॉमा एस अलग-अलग चर में "" स्थान हो सकता है।

+0

यदि आप आरएचईएल पर एक ही कट कमांड चाहते हैं, तो [जीएनयू कोर्यूटिल्स] (https://www.gnu.org/software/coreutils/) पैकेज इंस्टॉल करें। – alanc

उत्तर

7

इसके लिए tr का उपयोग करने के बारे में क्या?

$ tr ',' '\n' <<< "$var" 
hi 
hello how 
are you 
doing 

या

$ echo $var | tr ',' '\n' 
hi 
hello how 
are you 
doing 

के साथ:

$ sed 's/,/\n/g' <<< "$var" 
hi 
hello how 
are you 
doing 

या साथ:

$ awk '1' RS=, <<< "$var" 
hi 
hello how 
are you 
doing 
+0

किसी भी तरह से मैं एक बड़ा डंबो की तरह महसूस कर रहा हूँ !!! मैंने कभी भी 'tr' या 'sed' का उपयोग करने के बारे में सोचा नहीं ... pfffttt ..... उत्तर के लिए बहुत बहुत धन्यवाद! – Marcos

+0

'sed' काम नहीं किया, बैश-3.00 # echo $ वर | sed -e के /,/\ N/जी ' hinhello hownare youndoing लेकिन' tr 'में काम किया! – Marcos

+0

उहम्स मेरे पास परीक्षण करने के लिए सोलारिस सर्वर नहीं है, लेकिन शायद http://stackoverflow.com/questions/8991275/escaping-newlines-in-sed-replacement-string में आप कुछ सुराग पा सकते हैं। और 'tr' पढ़ने के लिए अच्छा आपके लिए अच्छा था :) – fedorqui

3

शायद अपने आप में यह करते हैं?

var="hi,hello how,are you,doing" 
printf "$var" | (IFS=, read -r -a arr; printf "%s\n" "${arr[@]}") 
hi 
hello how 
are you 
doing 
+0

उत्तर के लिए धन्यवाद, लेकिन मैं कुछ छोटा करना चाहूंगा, मैं इसके लिए एक सरणी का उपयोग नहीं करना चाहूंगा। – Marcos

संबंधित मुद्दे