2010-10-14 11 views
9

मुझे कुछ फाइलें जैसे नाम _ के साथ मिलती हैं। और केवल हर एक ही पंक्ति में शामिल हैबैश बिल्ली एकाधिक फाइलों को नई परतों के बिना एकल स्ट्रिंग में सामग्री

eg_01.txt: @china: 129.00

eg_02.txt @uk: 219,98

eg_03.txt @USA: 341,90

.. ....

मैं एक पंक्ति में उन्हें बिल्ली की उम्मीद कर रहा हूँ की तरह यूआरएल द्वारा भेजने के लिए: @china: [email protected]: [email protected]: 341.90

मैं का उपयोग गूंज cat eg_*

यह मुझे एक स्ट्रिंग की तरह उत्पादन रूप देने के, लेकिन यह वास्तव में नई लाइन शामिल हैं: "@china: 129.00

@uk: 219.98 @USA: 341.90"

क्या कोई अन्य तरीका है कि मैं उस स्ट्रिंग का निर्माण कर सकता हूं जिसकी अपेक्षा की जाती है और नई लाइन और यहां तक ​​कि अंतरिक्ष से छुटकारा पाता है? क्या यह करने के लिए पर्याप्त बिल्ली है? अग्रिम

+0

संबंधित: http://stackoverflow.com/questions/8739427/bash-add-string-to-the-end-of-the-file-without-line-break – redolent

उत्तर

17

में

धन्यवाद आप कर सकते थे हमेशा tr

tr "\n" " " 

को यह पाइप कि stdin पर सभी नई-पंक्तियों को हटा और उन्हें रिक्त स्थान

संपादित साथ बदल देता है: बार्ट सास ने सुझाव दिया के रूप में, आप tr -d

01 के साथ नई लाइनों को भी हटा सकते हैं

(ध्यान दें: सिर्फ दूसरा तर्क काम नहीं चलेगा के लिए tr को एक खाली स्ट्रिंग को निर्दिष्ट)

+2

यदि आप तारों के बीच रिक्त स्थान नहीं चाहते हैं आप इसके बजाय tr -d '\ n' का उपयोग कर सकते हैं। –

+0

आपको बहुत बिल्ली धन्यवाद उदा। * * | tr -d '\ n' चाल – user271785

+0

बहुत कम लोगों के लिए नोट करें जिनके पास विंडोज लाइन टर्मिनेटर के साथ फाइलें होंगी: "\ r \ n" स्ट्रिंग का उपयोग किया जाएगा। –

1

पर्ल में केवल एक आदेश

url=$(awk '{printf "%s",$0}' eg*) 
1

का उपयोग करना, आप इसे इस तरह करना चाहते हैं:

perl -pe'chomp' eg*.txt 

-p कहते हैं, "इनपुट फ़ाइल के माध्यम से लूप और कर जो कुछ कोड -e स्विच द्वारा निर्दिष्ट किया जाता है। पर्ल में chomp कहता है "किसी भी पिछली न्यूलाइन को हटाएं।"

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