2011-12-01 5 views
5

को ढूंढें और प्रतिस्थापित करें यह वह आदेश है जिसका मैं ऑनलाइन मानक पृष्ठ पर उपयोग कर रहा हूं।यूनिक्स ट्रा

tr '<' '\n<' < index.html 

हालांकि यह मुझे नई लाइनें दे रहा है, लेकिन फिर से गाजर को वापस नहीं जोड़ रहा है। उदा।

echo "<hello><world>" | tr '<' '\n<' 

रिटर्न

(blank line which is fine) 
hello> 
world> 

बजाय

(blank line or not) 
<hello> 
<world> 

धन्यवाद

उत्तर

12

है ऐसा इसलिए है क्योंकि tr केवल करता चरित्र के लिए चरित्र प्रतिस्थापन (या विलोपन)।

इसके बजाय sed आज़माएं।

echo '<hello><world>' | sed -e 's/</\n&/g' 

या awk

echo '<hello><world>' | awk '{gsub(/</,"\n<",$0)}1' 

या perl

echo '<hello><world>' | perl -pe 's/</\n</g' 

या ruby

echo '<hello><world>' | ruby -pe '$_.gsub!(/</,"\n<")' 

या python

echo '<hello><world>' \ 
| python -c 'for l in __import__("fileinput").input():print l.replace("<","\n<")' 
+0

मुझे लगता है कि कोशिश की, लेकिन मैं n n मिलता है।मुझे नहीं पता कि sed newline character – Kamran224

+0

@ कामरान 224 यह मेरे लिए काम करता है लेकिन कोशिश करें: echo -e ' ' | sed -e's/

+0

@ कामरान 224 '\ n' एक जीएनयू sed एक्सटेंशन है। आप किस प्रणाली पर हैं? – ephemient

1

क्या यह आपके लिए काम करता है?

awk -F"><" -v OFS=">\n<" '{print $1,$2}' 

[jaypal:~/Temp] echo "<hello><world>" | awk -F"><" -v OFS=">\n<" '{$1=$1}1'; 
<hello> 
<world> 

आप एक regex// (लाइनों आप इस के लिए क्या करना चाहते) awk{} कार्रवाई के सामने रख सकते हैं।

+1

''{$ 1 = $ 1} 1'' छोटा है और यदि लाइन पर'><'से अधिक है तो काम करेगा। – ephemient

+0

धन्यवाद @ephemient मैं सहमत हूं, मेरा जवाब अपडेट किया है। –

+0

यह प्रश्न के मुकाबले '<'वर्णों में से कम को प्रतिस्थापित करेगा। –

1

आप जीएनयू grep है, तो यह आपके लिए काम कर सकते हैं:

grep -Po '<.*?>[^<]*' index.html 

जो एचटीएमएल के सभी के माध्यम से पारित करना चाहिए, लेकिन प्रत्येक टैग निम्नलिखित संभव गैर टैग पाठ के साथ पंक्ति के आरंभ में शुरू कर देना चाहिए एक ही पंक्ति पर।

आप कुछ भी नहीं लेकिन टैग चाहते हैं:

grep -Po '<.*?>' index.html 

आपको पता होना चाहिए, हालांकि, कि यह regexes के साथ HTML पार्स करने के लिए not a good idea है।

1

आप अपनी नई लाइन कहां रखते हैं इसका आदेश महत्वपूर्ण है। इसके अलावा आप "<" से बच सकते हैं।

tr '\/<' '\/<\n' < index.html

`tr '<' '<\n' < index.html` works as well.