इस समस्या को हल करने के सबसे आसान और आसान तरीके:
जब हम स्थान के साथ नई पंक्ति वर्ण बदलना चाहते हैं :\n
xargs < file
xargs
प्रति पंक्ति वर्णों की संख्या और संयुक्त सभी वर्णों की संख्या की अपनी सीमाएं हैं, लेकिन हम उन्हें बढ़ा सकते हैं। इस आदेश को चलाकर विवरण प्राप्त किया जा सकता है: xargs --show-limits
और निश्चित रूप से मैनुअल में:man xargs
जब हम एक चरित्र को दूसरे बिल्कुल एक वर्ण से बदलना चाहते हैं :
tr '\n' ' ' < file
जब हम एक वर्ण को कई वर्णों से बदलना चाहते हैं :
tr '\n' '~' < file | sed s/~/many_characters/g
सबसे पहले, हम \n
टिल्ड्स के लिए नए वर्णों को प्रतिस्थापित करते हैं ~
(या पाठ में मौजूद अन्य विशिष्ट वर्ण का चयन नहीं करते हैं), और फिर हम टिल्ड वर्णों को किसी अन्य वर्णों ( many_characters
) के साथ प्रतिस्थापित करते हैं और हम इसे प्रत्येक टिल्ड (ध्वज g
) के लिए करते हैं।
sed
स्क्रिप्ट को एकल-उद्धरण में रखने की आवश्यकता है ताकि बैश इसके साथ गड़बड़ न करें (क्योंकि दो तर्कों के साथsed s/\n/ /g
कॉलsed
, अर्थात्s/n/
और/g
); (2) के बाद से आप के उत्पादन में चाहते हैंcat file | grep pattern
होने के लिए इनपुट करने के लिएsed
, नहीं तर्क कोsed
, आप को खत्म करने की जरूरत हैxargs
; और (3) इसकी कोई आवश्यकता नहींcat
है, क्योंकिgrep
इसके दूसरे तर्क के रूप में एक फ़ाइल नाम लिया जा सकता है। तो, आपको कोशिश करनी चाहिए थीgrep pattern file | sed 's/\n/ /g'
। (इस मामले में उपरोक्त लिंक पर दिए गए कारणों के लिए, यह काम नहीं करेगा, लेकिन अब आप भविष्य के लिए जानते हैं।)