मैं sed
काफी समय से उपयोग कर रहा हूं, लेकिन यहां एक विचित्रता है जिसके साथ मैं आया था, जिसे मैं हल नहीं कर पा रहा हूं।
मुझे वास्तविक मामले के साथ अपनी समस्या बताएं।
दृश्य 1
printf "ls" | xclip -selection clipboard
echo "ls" | xclip -selection clipboard
पहले कमांड में, मैं printf
आउटपुट को पाइप करता हूं xclip
ताकि यह क्लिपबोर्ड पर कॉपी हो जाए। अब, printf
इसके विपरीत, echo
डिफ़ॉल्ट रूप से एक नई पंक्ति अंत में सम्मिलित नहीं होती है। इसलिए, यदि मैं इस सामग्री को टर्मिनल में पेस्ट करता हूं, तो जो ls
कमांड कॉपी की जाती है वह स्वचालित रूप से नहीं चलती है।
दूसरे में, अंत में एक नई रेखा होती है, इसलिए क्लिपबोर्ड सामग्री को चिपकाने से क्लिपबोर्ड में कमांड के चलने का भी परिणाम होता है।
यह मेरे लिए अवांछनीय है। इसलिए, मैं उपयोग करते हुए नई लाइन को हटाना चाहता था sed
, लेकिन यह विफल रहा, जैसा कि नीचे दिए गए दृश्य में बताया गया है।
दृश्य # 2
echo "ls" | sed -r 's/\n//g' | xclip -selection clipboard
क्लिपबोर्ड की सामग्री में अभी भी नई-पंक्ति है। जब मैं इसे टर्मिनल में पेस्ट करता हूं, तो कमांड अपने आप चलती है।
मैंने गाड़ी वापसी चरित्र को हटाने की भी कोशिश की \r
। लेकिन नाडा। ऐसा लगता है कि मैं यहाँ कुछ बहुत ही महत्वपूर्ण / बुनियादी याद कर रहा हूँ।
generate-text | xclip
मामले में वांछनीय नहीं । यह उत्तर केवल अंतिम नई पंक्ति को निकालता है।