Portál AbcLinuxu, 12. května 2025 10:21
sed -e 's/CD_Beer2 cd_Bee/cd_Bee cd_Bee/g' *con
totiž neprovede nic. Ukázkový soubor je v příloze.
Kde dělám chybu?
Díky...
Řešení dotazu:
cat vstup.con | iconv -f UTF16LE -t UTF8 | sed 's/CD_Beer2 cd_Bee/cd_Bee cd_Bee/g' | iconv -f UTF8 -t UTF16LE > vystup.con
for f in soubor1 soubor2 ...; do iconv -f UTF16LE -t UTF8 <$f \ | sed 's/CD_Beer2 cd_Bee/cd_Bee cd_Bee/g' \ | iconv -f UTF8 -t UTF16LE \ > tmp; mv tmp "$f"; doneNebo je problém jinde?
sed
, stejně jako všechny ostatní unixové utility, nedokáže s UTF16 nijak speciálně pracovat - předpokládá že jeden znak je jeden byte-i
sed -i 's/C\x00D\x00_\x00B\x00e\x00e\x00r\x002\x00 \x00c\x00d\x00_\x00B\x00e\x00e\x00/c\x00d\x00_\x00B\x00e\x00e\x00 \x00c\x00d\x00_\x00B\x00e\x00e\x00/g' *conVyzkoušeno, funguje, ale je to hnus
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.