2012-10-25 9 views
5

मैं एक फ़ाइल है कि निम्न प्रपत्र की तर्ज आउटपुट है:यूनिक्स में एक टेक्स्ट फ़ाइल से लाइनों को जोड़ना?

$XYZ blah blah blah 
$XYZ something 
$XYZ random data 

"$ xyz" उपसर्ग हर पंक्ति के लिए एक ही है, यह वास्तव में एक डॉलर चिह्न के साथ शुरू होता है, और यह अत्यधिक कहीं भी होने की संभावना नहीं है लेकिन एक लाइन की शुरुआत।

इस फ़ाइल पर मुझे प्राप्त करने का एकमात्र तरीका स्क्रीन कैप्चर के माध्यम से होता है, जिससे लाइनें 80 अक्षरों पर लपेटती हैं। तो यह निम्नलिखित की तरह लग रहा है (यदि आप बहाना रैपिंग 80 से एक छोटी संख्या में है):

$XYZ blah bl 
ah blah 
$XYZ somethi 
ng 
$XYZ random 
data 

मुझे लगता है कि से वास्तविक लाइनों से बनाना चाहते हैं। मैं इसे करने के लिए एक प्रोग्राम लिख सकता था, लेकिन मुझे लगता है कि कुछ यूनिक्स कमांड हो सकता है कि मैं इससे परिचित नहीं हूं जिससे यह आसान हो सकता है। कोई विचार?

अग्रिम धन्यवाद।

+0

में के रूप में क्यों एक screencapture? – njzk2

+0

विभिन्न स्तरों पर पागल सुरक्षा अनुमतियां। मैं एक बिल्ली कर सकता हूं, लेकिन मैं इसे ftp नहीं कर सकता या इसे कहीं भी cp कर सकता हूं, मैं इसे या किसी अन्य चीज़ से ftp कर सकता हूं जिसे मैं सोचने में सक्षम हूं। – user1738853

+0

यदि आप टर्मिनल एमुलेटर में 'बिल्ली' कर रहे हैं, तो लाइन ब्रेक क्लाइंट-साइड डालने वाले नहीं हैं, इस मामले में आप किसी भी तरह आउटपुट को स्थानीय रूप से पाइप करने में सक्षम होना चाहिए? – lynks

उत्तर

4

सबसे पहले, एक लंबी लाइन में सभी लाइनों विलय और फिर एक नई पंक्ति जोड़ने के भी आप शब्द है जो एक लाइन की शुरुआत माना जाता है देखते हैं, इस तरह:

tr -d '\n' < file | sed 's/XYZ/\nXYZ/g' 
+0

मैं वास्तव में इस – lynks

+0

संख्या के साथ उत्तर देने वाला था, लेकिन शायद क्योंकि मैं regexp सही ढंग से नहीं कर रहा हूं ... मुझे ध्यान रखना चाहिए था कि "XYZ" वास्तव में एक डॉलर के संकेत से शुरू होता है। – user1738853

+0

डॉलर से बचने के लिए '\ $' का उपयोग करें i.e. 'sed 's/\ $ XYZ/\ n $ XYZ/g'' – dogbane

1

perl में:

perl -pe 's/\n//g;s/XYZ\s+/\n$&/g' filename.txt 
+0

संस्करण सरलीकृत। –

1

paste आदेश वास्तव में इस उद्देश्य के लिए है:

paste -d "" - - 

echo '$XYZ blah bl 
ah blah 
$XYZ somethi 
ng 
$XYZ random 
data' | paste -d "" - - 

आउटपुट

$XYZ blah blah blah 
$XYZ something 
$XYZ random data