문자열에서 영어가 아닌 문자를 제거하는 방법

문자열에서 영어가 아닌 문자를 제거하는 방법

나는 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 ]/}

관련 정보