私は音楽を再生するスクリプトを書いた。ところでファイル名がおかしいですね。
このファイル名文字列があるとします。
Muzzy__Break_Away__28feat._Priority_One_29__5BMonstercat_EP_Release_5D.mp3
私はこの目的を達成したいと思う。
Muzzy Break Away feat Priority One
これまで私はこれをbashに持っています。
file="whatever";
file=${file//_/" "};
file=${file//[0123456789ABCDEF][0123456789ABCDEF]/""}; #replaces bytes
file=${file//.extension1/""};
file=${file//.extension2/""};
file=${file//.extensionn/""}; #many more, e.g. .mp3
file=${file//word1/""};
file=${file//word2/""};
file=${file//wordn/""}; #many more, e.g. Monstrcat
file=${file//./""};
echo "$file";
1つのコマンドで同じ順序(大文字と小文字を区別)でこれを単純化する方法はありますか?
ベストアンサー1
Perlを呼び出すこともできます:
formatted=$( perl -lpe '
s/([0-9A-F]{2})/chr hex $1/eg; # hex to ascii
s/_+/ /g; # underscores to space
s/\[[^]]*\]//g; # remove bracketed text
s/[^[:alnum:][:blank:]]//g; # remove non-alphanumeric,non-blank chars
' <<<"${file%.*}"
)
echo "$formatted"
Muzzy Break Away feat Priority One