Если у Вас есть ряд файлов, для которых Вам нужна низкая задержка, можно установить объем RAID-1, который зеркально отражает содержание SSD на жестком диске. Объявите компонент жесткого диска как “запись главным образом”, так, чтобы SSD был одобрен при чтении. Например, если sda
Ваш SSD и sdb
Ваш жесткий диск, создайте раздел sda1
это покрывает целый диск, создайте раздел sdb1
из того же размера, и создают объем RAID с
mdadm --create -l 1 -n 2 /dev/md0 /dev/sda1 --write-mostly /dev/sdb1
Как лютик золотистый, уже прокомментированный выше, UTF-8 является многобайтовым кодированием переменной ширины. Каждый символ мог бы состоять максимум из четырех байтов. После недопустимого байта можно в лучшем случае надеяться, что следующий байт мог бы запустить новый символ.
sed
попытки соответствовать символам не байты. Поскольку недопустимый байт не является никаким символом и .
только символы соответствий, которым это не будет соответствовать и Ваш результат, абсолютно правильны.
Необходимо узнать, какое кодирование используется для того файла. ( file
команда могла бы помочь Вам с этим.) Установка переменной среды LANG
к правильному значению должен быть достаточно для sed
для работы пути, Вы предназначили это к. В Вашем случае, вероятно, LANG=C
должен быть достаточно.
Установите Ваш LANG
переменная среды к некоторой кодировке UTF-8 представляет в виде строки как LANG='en_US.UTF-8'
. Здесь, на Mac OS X 10.6.8, это LANG='C'
это вызывает GNU sed
4.2.1, чтобы прекратить анализировать, как описано в вопросе. GNU sed
4.2.2, с другой стороны, просто хорошо работает.
Другая модификация, которая работает на меня (на Mac OS X 10.6.8) должна заменить regex часть :.*
с: :\([^[:print:]]\|[[:print:]]\)*
(Класс символов POSIX).
echo $'rar:///home/andy/audio_compressed/world/ru/Lika Star - Ya (RUS 2001).rar:2001- \357\277\275/02 \357\277\275\357\277\275\357\277\275.mp3' > archives.pls
(
export LANG='C'
#locale charmap
cat archives.pls | grep --perl-regexp 'Lika.*rar.*02'
cat archives.pls | grep --perl-regexp 'Lika.*rar.*02' | gsed -e 's/^\(zip\|rar\|7z\):\/\///' -e 's/\(\.\(zip\|rar\|7z\)\):.*/\1/' # GNU sed 4.2.1
cat archives.pls | grep --perl-regexp 'Lika.*rar.*02' | gnused -e 's/^\(zip\|rar\|7z\):\/\///' -e 's/\(\.\(zip\|rar\|7z\)\):.*/\1/' # GNU sed 4.2.2
cat archives.pls | grep --perl-regexp 'Lika.*rar.*02' | gsed -e 's/^\(zip\|rar\|7z\):\/\///' -e 's/\(\.\(zip\|rar\|7z\)\):\([^[:print:]]\|[[:print:]]\)*/\1/'
)
# output:
# rar:///home/andy/audio_compressed/world/ru/Lika Star - Ya (RUS 2001).rar:2001- �/02 ���.mp3
# /home/andy/audio_compressed/world/ru/Lika Star - Ya (RUS 2001).rar�/02 ���.mp3
# /home/andy/audio_compressed/world/ru/Lika Star - Ya (RUS 2001).rar
# /home/andy/audio_compressed/world/ru/Lika Star - Ya (RUS 2001).rar
#--------------
(
export LANG='en_US.UTF-8'
#locale charmap
cat archives.pls | grep --perl-regexp 'Lika.*rar.*02'
cat archives.pls | grep --perl-regexp 'Lika.*rar.*02' | gsed -e 's/^\(zip\|rar\|7z\):\/\///' -e 's/\(\.\(zip\|rar\|7z\)\):.*/\1/' # GNU sed 4.2.1
cat archives.pls | grep --perl-regexp 'Lika.*rar.*02' | gnused -e 's/^\(zip\|rar\|7z\):\/\///' -e 's/\(\.\(zip\|rar\|7z\)\):.*/\1/' # GNU sed 4.2.2
cat archives.pls | grep --perl-regexp 'Lika.*rar.*02' | gsed -e 's/^\(zip\|rar\|7z\):\/\///' -e 's/\(\.\(zip\|rar\|7z\)\):\([^[:print:]]\|[[:print:]]\)*/\1/'
)
# output:
# rar:///home/andy/audio_compressed/world/ru/Lika Star - Ya (RUS 2001).rar:2001- �/02 ���.mp3
# /home/andy/audio_compressed/world/ru/Lika Star - Ya (RUS 2001).rar
# /home/andy/audio_compressed/world/ru/Lika Star - Ya (RUS 2001).rar
# /home/andy/audio_compressed/world/ru/Lika Star - Ya (RUS 2001).rar