इको के साथ नई लाइन कैरेक्टर कैसे प्रिंट करें?


15

मैं hexdumpइस तरह के साथ एक स्ट्रिंग डंप 2031 3334 2e30 0a32 2032 3331 302e 000a। यह स्पष्ट है कि 0x0aनई लाइन वर्ण है, हालांकि, जब मैं इस स्ट्रिंग को बाहर निकालने की कोशिश करता हूं, तो मुझे हमेशा मिलता है 1 430.2 2 13.0- नई लाइन को एक स्थान के साथ बदल दिया जाता है, यहां तक ​​कि मैं -eध्वज का उपयोग करता हूं ।

समस्या क्या हो सकती है? क्या टेलिंग \0आउटपुट को बर्बाद करता है? क्या 0x0aनई लाइन प्रिंट करने का कोई विकल्प है ?

धन्यवाद एवं शुभकामनाएँ।


जब मैं इस स्ट्रिंग को प्रतिध्वनित करने की कोशिश करता हूं तो आप वास्तव में ऐसा कैसे करते हैं? आपके द्वारा उपयोग की जाने वाली सटीक कमांड क्या है?
डेनिस

@ डेनिस मेरा मतलब है echo -e। धन्यवाद, मुझे एक समाधान मिल गया।
समर_मोर_मोर_में

1
printf "...\n"इसके बजाय पसंदीदा समाधान का उपयोग करना है echo
माइकल

जवाबों:


26

echoकमांड के साथ नई लाइन कैरेक्टर "\ n" है। निम्नलिखित उदाहरण लेते हुए:

echo -e "This is line 1\nThis is line 2"

उत्पादन में परिणाम होगा

This is line 1
This is line 2

"-E" पैरामीटर है यहां महत्वपूर्ण।


3
btw, यह "echo -e ..."सही ढंग से काम करने के लिए बैश की गूंज पर निर्भर करता है (उदाहरण के लिए, dashबस "-e" प्रिंट करेगा); लेकिन '/ बिन / प्रतिध्वनि' भी काम कर सकती है (या नहीं)। दुर्भाग्य से (शायद उचित रूप से), इको के बहुत सारे आस-पास हैं, और आप वास्तव में इस बात की परवाह नहीं करना चाहते हैं कि आप किस चीज को प्राप्त करने जा रहे हैं। 'printf "....\n"एनवी और गोले के पार एक अधिक पोर्टेबल विकल्प का उपयोग करना है।
माइकल

@michael_n जो कि ओपी आखिरकार वापस लौट आया है , वास्तव में। लेकिन सवाल स्पष्ट रूप से "गूंज के साथ" बताया गया था - इसलिए मेरा जवाब इस तरह से है। किसी भी तरह, यह "बैश के साथ" नहीं था - इसलिए उन मतभेदों को इंगित करने के लिए धन्यवाद!
इज़ी

5

POSIX 7 कहता है कि आप नहीं कर सकते

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html

-e परिभाषित नहीं है और बैकस्लैश लागू किए गए परिभाषित हैं:

यदि पहला ऑपरेंड एक -n है, या यदि किसी भी ऑपरेंड में <backslash> वर्ण है, तो परिणाम कार्यान्वयन-परिभाषित होते हैं।

जब तक कि आपके पास वैकल्पिक XSI एक्सटेंशन न हो।

इसलिए printfइसके बजाय उपयोग करें :

प्रारूप ऑपरेंड XBD फ़ाइल स्वरूप संकेतन में वर्णित प्रारूप स्ट्रिंग के रूप में उपयोग किया जाएगा [...]

फ़ाइल स्वरूप संकेतन :

\ n <newline> मुद्रण स्थिति को अगली पंक्ति के प्रारंभ में ले जाएं।

यह भी ध्यान रखें कि Ubuntu 15.10 और सबसे distros echoदोनों के रूप में लागू :

  • एक बैश में निर्मित: help echo
  • एक स्टैंडअलोन निष्पादन योग्य: which echo

जिसके कारण कुछ भ्रम हो सकता है।


2

मैं आखिरकार इस स्ट्रिंग को ठीक से प्रारूपित करता हूं printf "$string"। आप सभी को धन्यवाद।


यह $stringआप क्या बोलते हैं? यह सवाल से कैसे जुड़ा है? \nअन्य दो उत्तरों की तरह इसमें क्या शामिल नहीं है?
पीटर मॉर्टेंसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.