echo "abc" >>file.txt
पहले नहीं, बाद में एक नई लाइन डालता है abc
। यदि आप abc
इसकी अपनी लाइन के साथ समाप्त हो जाते हैं , तो इसका मतलब है कि पहले की नई लाइन पहले abc
से मौजूद थी file.txt
।
ध्यान दें कि टेक्स्ट फ़ाइल के लिए एक नई पंक्ति में समाप्त होना पूरी तरह से सामान्य है। यूनिक्स पर, एक पंक्ति में null new या newline के अलावा अन्य वर्णों का अनुक्रम होता है, जिसके बाद एक newline होता है। 1 इसलिए कोई भी गैर-रिक्त पाठ फ़ाइल एक नए वर्ण के साथ समाप्त होती है।
यदि आप किसी फ़ाइल की अंतिम पंक्ति में पाठ जोड़ना चाहते हैं, तो आप ऐसा नहीं कर सकते >>
, क्योंकि यह हमेशा फ़ाइल में संलग्न होता है, इसलिए यह हमेशा अंतिम नई पंक्ति के बाद लिखता है। इसके बजाय आपको एक उपकरण की आवश्यकता है जो किसी मौजूदा फ़ाइल को संशोधित करने में सक्षम हो। उदाहरण के लिए, आप sed का उपयोग कर सकते हैं :
sed '$ s/$/abc/' file.txt >file.txt.new && mv file.txt.new file.txt
Sed कमांड में, पहले का $
अर्थ है "अंतिम पंक्ति पर केवल निम्न कमांड करें", कमांड s/REGEX/REPLACEMENT/
रेप्लेकशन द्वारा REGEX की जगह लेती है, और $
लाइन के अंत में नियमित अभिव्यक्ति मेल खाती है।
लिनक्स की सीड कमांड में एक बिल्ट-इन फीचर है जो इस क्रिएट-न्यू-फाइल-एंड-रिप्लेसमेंट सीक्वेंस को स्वचालित करता है, जिससे आप इसे छोटा कर सकते हैं
sed -i '$ s/$/abc/' file.txt
Ull यह एक अशक्त बाइट है, जिसे ASCII NUL और Unicode U + 0000 कहता है। पाठ प्रसंस्करण कार्यक्रम इस चरित्र के साथ सामना कर सकते हैं या नहीं कर सकते हैं।
1 आईईईई 1003.1-2008 के आधार परिभाषा अध्याय के "परिभाषाएँ" खंड में पाठ फ़ाइल , रेखा और न्यूलाइन चरित्र की परिभाषाएँ देखें: 2016।