За вероятным исключением 16.4.3528.331
(, который является номером версии Microsoft MimeOLE ), и, возможно, 190822-4
(, который, по-видимому, основан на дате ), ни один из этих номеров или строк не имеет общее -назначение значение.
Под «значением общего назначения» я подразумеваю любое значение вне контекста сообщения, которое обрабатывается в данный момент, или конкретных программ, которые его обрабатывают.
Они либо генерируются (часто полу-случайным образом )для создания уникальных (или почти уникальных )идентификаторов без фактического значения, или какого-либо идентификатора или отслеживания код со значением, имеющим отношение только к программе (s ), создавшей их. Эти строки обычно генерируются для целей ведения журнала, чтобы можно было отслеживать путь конкретного сообщения через различные процессы (идентификаторы очередей и идентификаторы процессов и т. д. )и/или системы (сообщение -идентификатор )..
Короче говоря, они не имеют смысла. За исключением номеров версий, они существуют в первую очередь для помощи в анализе и аудите файла журнала. Это произвольные идентификаторы.
sed '/ \[LD\]/ { s///; s,/,/_lossless/,2; }' file
Чтобы найти строки в файле, содержащие подстроку [LD]
, вы можете использовать регулярное выражение / \[LD\]/
в sed
. [
необходимо экранировать, чтобы потерять особое значение, которое оно в противном случае имело бы в регулярном выражении. Нам не нужно избегать ]
, но мы будем избегать его ради симметрии.
Как только мы нашли строку с подстрокой [LD]
, мы можем заменить эту строку ничем, т. е. удалить ее с помощью замены s///
. При использовании пустого регулярного выражения -будет использовано самое последнее выражение, а самое последнее выражение соответствовало [LD]
.
Следующая подстановка заменяет второй /
строкой /_lossless/
. Мы выбираем второе совпадение регулярного выражения /
в строке, используя 2
в конце, и используем запятые в качестве разделителей для команды, а не косую черту для удобства.
В цикле создаются файлы с суффиксом имени файла .new
:
for name in *.m3u; do
sed '/ \[LD\]/ { s///; s,/,/_lossless/,2; }' -- "$name" >"$name".new
done
Чтобы заменить файлы в -на macOS, используйте sed -i ''...
.
for name in *.m3u; do
sed -i '' '/ \[LD\]/ { s///; s,/,/_lossless/,2; }' -- "$name"
done
Не забудьте -создать резервную копию данных перед тестированием деструктивных команд.
Вы можете попробовать этоsed
for f in *.mp3; do
var1=$(sed -E 's|(.[^/]*)(.[^[]*).*](.*)|\1/_lossless\2\3|' "$f")
mv "$f" "var1"
done
Выход
/music/_lossless/Miles Davis/1959 - Kind of Blue /Miles Davis - So What.mp3