@ julio-Guerra: Pobiegłem do podobnej sytuacji, starając się usunąć linie jakby folowing (uwaga na znak Æ
) :
--MP_/yZa.b._zhqt9OhfqzaÆC
w pliku, używając
sed 's/^--MP_.*$//g' my_file
Kodowanie plik wskazany przez komendę Linux file
był
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
Próbowałem swoje rozwiązanie, z różnych permutacji (mądry!); np
LANG=ISO-8859 sed 's/^--MP_.*$//g' my_file
ale żaden z nich nie działa. Stwierdzono, że dwie obejścia:
- Poniżej
Perl
ekspresji obrobione, to znaczyusunięte, że linia:
perl -pe 's/^--MP_.*$//g' my_file
[na wyjaśnienie -pe
przełączników sterujących linii, odnoszą się do tego StackOverflow odpowiedzi:
Perl flags -pe, -pi, -p, -w, -d, -i, -t?]
- Alternatywnie, po konwersji kodowania pliku na UTF-8, działało wyrażenie sed (znak
Æ
pozostał, ale był teraz kodowany w UTF8):
iconv -f iso-8859-1 -t utf8 my_file > my_file.utf8
Ponieważ pracuję z dużą (1000) e-maili z różnych kodowań, które przechodzą obróbkę pośrednią (bash skryptów konwersji na UTF-8, nie zawsze działa), do moich celów „rozwiązanie 1 "powyżej będzie prawdopodobnie najsolidniejszym rozwiązaniem.
Uwagi:
- sed (GNU sed) 4,4
- Perl v5.26.1 zbudowany dla x86_64-linux-thread-wielo
System x86_64
- Arch Linux