मुझे सीमांकक से पहले एक पंक्ति से पाठ को हटाने की आवश्यकता है।
उदाहरण के लिए:
(123434): hello::{apple,orange,mango}.
मुझे पहले पाठ को हटाने की आवश्यकता है :
। यानी (123434)
।
क्या इस कार्य को करने के लिए linux में कोई कमांड है?
मुझे सीमांकक से पहले एक पंक्ति से पाठ को हटाने की आवश्यकता है।
उदाहरण के लिए:
(123434): hello::{apple,orange,mango}.
मुझे पहले पाठ को हटाने की आवश्यकता है :
। यानी (123434)
।
क्या इस कार्य को करने के लिए linux में कोई कमांड है?
जवाबों:
इस sed
कमांड को ट्रिक करना चाहिए। निम्न आदेश फ़ाइल को अधिलेखित कर देगा:
sed -i 's/^[^:]*:/:/' file
बस आउटपुट प्रिंट करने के लिए, -i
झंडे को हटा दें । आउटपुट को नई फ़ाइल में डालने के लिए, -i
ध्वज को हटाएं और आउटपुट को रीडायरेक्ट करें:
sed 's/^[^:]*:/:/' file > new_file
आप इसे काफी सरल बैश निर्देश के साथ कर सकते हैं :
mytext="(123434): hello::{apple,orange,mango}."
echo ${mytext#*)}
यह छपेगा : hello::{apple,orange,mango}.
। आप इसी तरह से उपसर्गों और प्रत्ययों को काट सकते हैं। इसके अलावा, उपसर्ग और प्रत्यय परिभाषाओं में वाइल्डकार्ड शामिल हो सकते हैं।
कट उपसर्ग - पहले उपसर्ग वाइल्डकार्ड मैच तक: ${variable#prefix}
कट उपसर्ग - पिछले उपसर्ग वाइल्डकार्ड मैच तक: ${variable##prefix}
कट प्रत्यय - पहले प्रत्यय वाइल्डकार्ड मैच तक: ${variable%suffix}
कट प्रत्यय - अंतिम प्रत्यय वाइल्डकार्ड मैच तक: ${variable%%suffix}
यह पहली नजर में अस्पष्ट लग सकता है, निम्न उदाहरण देखें:
mytext="xAxBxAxBx"
echo ${mytext#*A} # will print: xBxAxBx
echo ${mytext##*A} # will print: xBx
echo ${mytext%B*} # will print: xAxBxAx
echo ${mytext%%B*} # will print: xAx
echo ${mytext%%C*} # will print: xAxBxAxBx
अंतिम उदाहरण में, पैटर्न मेल नहीं खाता है, इसलिए कुछ भी नहीं काटा जाता है।
echo ${mytext#*:}:
। यह ठीक तरह से लाइन्स को हैंडल करेगा (123)(434): hello::{apple,orange,mango}.
और 123434: hello::{apple,orange,mango}
।
sed
याawk