@ जूलियो-गुएरा: मैं एक ऐसी ही स्थिति में भाग गया, folowing (ध्यान दें Æ
चरित्र) की तरह लाइनों को हटाने का प्रयास :
--MP_/yZa.b._zhqt9OhfqzaÆC
एक फ़ाइल में, का उपयोग कर
sed 's/^--MP_.*$//g' my_file
फ़ाइल लिनक्स file
आदेश ने संकेत दिया एन्कोडिंग
file my_file: ISO-8859 text, with very long lines
file -b my_file: ISO-8859 text, with very long lines
file -bi my_file: text/plain; charset=iso-8859-1
मैं अपने समाधान, विभिन्न क्रमपरिवर्तन के साथ की कोशिश की थी (चालाक!); उदाहरण के लिए,
LANG=ISO-8859 sed 's/^--MP_.*$//g' my_file
लेकिन उन में से कोई भी काम किया। मुझे दो वर्कअराउंड मिले:
- निम्नलिखित
Perl
अभिव्यक्ति ने काम किया, यानी।[, -pe
कमांड लाइन स्विच की एक विवरण के लिए यह StackOverflow जवाब का संदर्भ लें: Perl flags -pe, -pi, -p, -w, -d, -i, -t?]
perl -pe 's/^--MP_.*$//g' my_file
: कि रेखा को हटा
- वैकल्पिक रूप से, फ़ाइल एन्कोडिंग को यूटीएफ -8 में परिवर्तित करने के बाद, sed अभिव्यक्ति काम करती है (
Æ
वर्ण बना रहा, लेकिन अब यूटीएफ 8-एन्कोडेड था):
iconv -f iso-8859-1 -t utf8 my_file > my_file.utf8
मैं विभिन्न एन्कोडिंग के साथ ईमेल के बहुत सारे (1000 के), कि (UTF-8 के लिए बैश-पटकथा रूपांतरण हमेशा काम नहीं करते हैं) मध्यवर्ती प्रसंस्करण से गुजरना, मेरे प्रयोजनों "समाधान 1 के लिए साथ काम कर रहा हूँ के रूप में "उपरोक्त शायद सबसे मजबूत समाधान होगा।
नोट्स:
- sed (जीएनयू sed) 4.4
- पर्ल v5.26.1 के लिए x86_64-linux-धागे की बहु
- आर्क लिनक्स x86_64 प्रणाली
स्रोत
2018-01-16 18:01:13