प्रिंट की गई पैटर्न रेखाएँ साथ-साथ [बंद]


-3

मेरे पास टेक्स्ट फाइल है जिसमें नीचे लाइनें हैं

From:   arkit Corp. <do-not-reply@123.ac>

Sent:   Friday, June 16, 2017 6:35 PM

To:     User Name

Subject:        arkit Corp.: activity alert.


                 <http:// arkit.co.in/>

ACTIVITY ALERT FOR:

Ravi


https:// arkit.co.in/ Path Read (03/07/2017)

Path: /website/upload/file.txt


https:// arkit.co.in/ Path Read (04/07/2017)

Path: /website/upload/file1.txt



        Copyright  2017 arkit Corp.. All Rights Reserved.

मैं उन्हें नीचे की तरह प्रिंट करना चाहूंगा

https:// arkit.co.in/ Path Read (03/07/2017) Path: /website/upload/file.txt
https:// arkit.co.in/ Path Read (04/07/2017) Path: /website/upload/file1.txt

क्या कोई सुझाव दे सकता है कि मैं कैसे साइड-बाय-साइड प्रिंट कर सकता हूं


pasteयहाँ आपका दोस्त है विशेष रूप से,paste -sd' ' yourtxtfile

इतना ही नहीं उन दो पंक्तियों में मेरे पास पाठ फ़ाइल में अन्य पंक्तियाँ भी हैं।
रवि अंकम

1
@RaviAnkam उस तर्क की व्याख्या करें जिसके द्वारा आप संयोजन करना चाहते हैं ... क्या आपके पास इनपुट फ़ाइल में खाली लाइनें हैं?
सुन्दीप

आपके मामले में पैटर्न लाइनों से क्या मतलब है ?
रोमनप्रेह्रेस्ट

2
इन स्पष्ट टिप्पणियों को प्रश्न में संपादित किया जाना चाहिए; अन्यथा उन्हें आसानी से नजरअंदाज किया जा सकता है, एक अस्पष्ट सवाल छोड़कर।
जेफ स्कालर

जवाबों:


0

मैं आपको पूरे संदेश को पार्स करना चाहता हूं, इस तरह "पतों" का उपयोग करें:

sed -n '/https:/h;/Path:/{H;g;s/\n/ /p;}' yourfile

डिफ़ॉल्ट रूप से आउटपुट न करें ( -n)। https:होल्ड बफ़र से शुरू होने वाली एक लाइन रखो , फिर Path:लाइन के लिए, इसे होल्ड बफ़र के साथ जोड़ें, इसे पैटर्न स्पेस में ले जाएँ और न्यूलाइन को व्हॉट्सएप से बदलें।

या एक अलग दृष्टिकोण:

sed -e '/^https:/!d;:a' -e '$!N;/Path:/!ba' -e 's/\n\n*/ /' yourfile

इसका मतलब है: यदि लाइन के साथ शुरू नहीं होता है https:, तो इसे हटा दें ( /^https:/!d)। जब तक हम :aकोई रेखा नहीं जोड़ते हैं $!N, तब तक नई पंक्तियों को जोड़ने के लिए एक लूप शुरू करें ( ) Path:/Path:/!ba। अंत में एक पंक्ति ( s/\n\n*/ /) में सब कुछ डालने के लिए व्हॉट्सएप के साथ नई कहानियों को बदलें ।


यह दृष्टिकोण काम कर रहा है, अगर मेरे पास पाठ के रूप में केवल एक ईमेल है। लेकिन मेरे पास एकल फ़ाइल में कई लाइनें हैं जहां यह काम नहीं कर रहा है। जैसा कि मैंने केवल एक ही ईमेल सामग्री पोस्ट की है जैसे कि मेरे पास बहुत सारे ईमेल हैं और सभी ईमेल सामग्री एकल पाठ फ़ाइल में है।
रवि अंकम

मैं यह नहीं देख सकता कि यह एक फ़ाइल में उतने ईमेल के साथ विफल क्यों हो सकता है जितना आप चाहते हैं। क्या आप अपने प्रश्न का विस्तार कर सकते हैं जिसमें कोई मामला नहीं है?
फिलिप्पुस

पथ से इसकी छपाई: पहली पंक्ति मुद्रण नहीं है। पथ: / रविकुमार / Delivey रवि / ARK-23231498216 R6 (05.05.07) -Jpk J.xlsx से
रवि Ankam

मुझे समझ नहीं आ रहा है। कृपया प्रश्न में गैर-कार्यशील नमूना शामिल करें, ताकि मैं आपके नमूने को संसाधित कर सकूं और समस्या देख सकूं।
फिलिप्प्स

0

विकल्प 1

अगर आप खाली लाइनों को तोड़ना चाहते हैं,

awk '{printf $0; printf ($0=="")? "\n" : " "}' /path/to/file.txt

व्याख्या

  • printf $0: वर्तमान में लाइन प्रिंट करें (बिना किसी नई रेखा के)
  • printf ($0=="")? "\n" : " ": यदि वर्तमान लाइन खाली है ($0=="")?, तो एक नई लाइन प्रिंट करें "\n", अन्यथा एक स्थान प्रिंट करें " "
  • एनबी यह अंतिम पंक्ति पर एक अनुगामी स्थान को प्रिंट करता है, जो आपके लिए समस्या हो सकती है या नहीं।

विकल्प 2

हालाँकि, यदि आप हर तीसरी पंक्ति को तोड़ना चाहते हैं,

awk '{printf $0; printf (NR%3=="0")? "\n" : " "}' /path/to/file.txt

व्याख्या

  • (NR%3=="0"): यहाँ सशर्त परीक्षण यदि रेखा संख्या NRमॉड 3शून्य के बराबर है। यानी यह हर तीन इनपुट लाइनों में एक नई लाइन प्रिंट करेगा, अन्यथा केवल एक स्थान प्रिंट करें।

0

विधि -1: हम पैराग्राफ को पैराग्राफ मोड में आमंत्रित करते हैं -00और ORS = \ n -lबनाते हैं और फ़ाइल को स्पष्ट प्रिंट के साथ रीड-इन मोड में सक्षम करते हैं -n। वर्तमान रिकॉर्ड $_जो https: // के साथ शुरू होता है, वह उठाया जाता है और यह अगले रिकॉर्ड से भरा होता है <>। अंत में इस एप्लाइड करेंट रिकॉर्ड में नई खबरों को हटा दिया गया है और स्टैडआउट के लिए जो अवशेष छपे हैं। ओआरएस को वर्तमान रिकॉर्ड में जोड़ा जाएगा।

perl -ln -00e 's/$/$".<>/e and print tr/\n//dr if m|^https://|' file.txt

इस पद्धति में, हम https: // लाइन का सामना करते समय एक लूप सेट करते हैं और खाली लाइनों को जोड़ते रहते हैं जो हमें पहले गैर-खाली के रास्ते में मिलती है। इस समय हम उन खाली लाइनों को हटाते रहते हैं।

sed -ne '
   \|^https://|!d
   :loop
      N
      s/\n$//
   tloop
   s/\n/ /p
' file.txt

उत्पादन

https:// arkit.co.in/ Path Read (03/07/2017) Path: /website/upload/file.txt
https:// arkit.co.in/ Path Read (04/07/2017) Path: /website/upload/file1.txt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.