文字列から英語以外の文字を削除する方法

文字列から英語以外の文字を削除する方法

私はmp3などからMETAデータを削除するBASHスクリプトを作成し、必要に応じてそれを細かく切り取ってmp3をリサンプリングし、データを再設計してアーティスト/アルバムに対応するディレクトリを作成します。

曲のタイトルの途中で英語以外の文字を含むmp3をいくつか見つけました。途中の部分を削除し、曲のタイトルにきちんとした端を再配置するための最良の方法を知る必要があります。 Exiftoolを使用してMETAデータを削除し、出力をvar-nameに入れました。

 ARTIST1="`exiftool -Artist "$FILENAME" -p '$Artist'`"
 TITLE1="`exiftool -Title  "$FILENAME" -p '$Title'`"
 ALBUM1="`exiftool -Album  "$FILENAME" -p '$Album'`"


first strip... Artist is -> The Stranglers and Friends
first strip... Album is -> Live in
first strip... Title is -> The Raven – With Basil Gabbi

METAデータの曲タイトル

カラス������������������������������������������������������ ���������������バジルガビと

これを達成するために、METAデータソング名の間のコンテンツをどのように削除しますか?

The Raven With Basil Gabbi

構文は次のとおりです。

 newSongName="$( what ever code goes here to strip out that non english sting part )"

これにより、新しい文字列をファイルに書き換えることができ、古いMETAデータを新しい文字列に置き換えることができます。

ありがとう

答え1

これは非常に近づくでしょう。

newSongName=$(echo "$TITLE1" | tr -dc '[:print:]')

tr含まれていない文字を削除するように求められます。print クラス名。必要に応じて他の文字クラスを試すことができます。

答え2

歪んだ文字を含む文字列 - >

 $ x="The Raven ƒÆ’¢â‚¬â€œ With Basil Gabbi"

これにより、すべての大文字が保持され、小文字のazは他のすべての文字を削除します。

$ echo ${x//[^A-Za-z ]/}

文字列はこのように残してください。

The Raven With Basil Gabbi

スクリプトでは、次のように表示されます。

title=${TITLE1}
## holds on to normal chars getting rid of the rest
title=${title//[^A-Za-z ]/}

関連情報