awkを使用してtageditorの出力からバンド名を抽出する方法は?

awkを使用してtageditorの出力からバンド名を抽出する方法は?

私の音楽m4a、mp3などをよりよく整理しようとしています。私はファイルにタグが付けられているので、ファイルを読み取ってファイルからアルバムやアーティスト情報を抽出し、正しいフォルダにファイルを保存するスクリプトを書くことができると思いました。私もその過程でAWKを学びたいです。

私は次のように始めました:

for file in *.m4a; do
    tageditor get artist -f "$file" | awk '/Artist/{ print }'
    done

出力:

Artist            Periphery
Artist            Meshuggah, Tomas Haake, Marten Hagström, Fredrik Thordendal,
Artist            Varials, Bryan Garris
Artist            Cannibal Corpse
Artist            Lamb of God
Artist            Ingested
Artist            Linkin Park
Artist            Car Bomb
Artist            Whitechapel
Artist            Divine Destruction
Artist            Ingested, Sean Hynes, Sam Yates, Jason Evans, Lyn Jeffs

それから:

for file in *.m4a; do
    tageditor get artist -f "$file" | awk '/Artist/{ print $2 }'
    done

出力:

Periphery
Angelmaker,
Meshuggah,
Varials,
Cannibal
Lamb
Ingested
Linkin
Car
Whitechapel
Divine
Ingested,

私はまだawkがどのように機能するかを理解しようとしているので、コードを書き直しました。

./*.m4a にあるファイルの場合、 info=$(tageditor get アーティストアルバム -f "${file}") prt1=$(echo "$info" | awk 'sub(/^.{22}/, " ")') prt2=$(echo "$prt1" | awk 'NR>2' ) art="$prt2" albm=$(echo "$prt2" | awk 'NR==1' ) band=$( echo "$art" | awk 'NR= =2' ) エコ "$info" エコ エコ "$prt1" エコ エコ "$prt2" エコ エコ "$albm" #ALBUM エコ エコ "$band" #ARTIST エコ

私は次のようになります: "./Do Not Look Down.m4a"のタグ情報:

  • MP4/iTunes ラベルアルバム Koloss アーティスト Meshuggah, Tomas Haake, Marten Hagström, Fredrik Thordendal, Tomas Haake

/ 下を見下ろさないでください。

コロス・メソウガ、トーマス・ハッカー、マーティン・ハーグストローム、フレデリック・トーデンダル、トーマス・ハッカー

コロス

Meshuggah, Thomas Haacke, Martin Hagström, Fredrik Todendaal, Thomas Haacke

awkを使用して最後の行とその後のすべての行を削除する方法

ベストアンサー1

エクスポートツールシェルコマンドラインまたはシェルスクリプトで必要な操作(メタデータに基づいてファイルを移動および名前変更することを含む)を実行できるコマンドラインツール(Perlで書かれています)。

名前の「EXIF」にだまされないでください。 EXIFデータだけでなく、画像、オーディオ、ビデオ形式から文書(DOCXやMicrosoft Office形式など)まで、さまざまなファイル形式のメタデータを読み書きできます。 ) xls、オープンオフィス形式、PDFなど

詳しくはマニュアルページをご覧ください。


を使用する代わりに自分で書いたい場合は、exiftool次の内容を読んでください。

perlさまざまなファイル形式のメタデータを読み書きできる複数のライブラリモジュールがあるため、このような作業にお勧めします。

画像::Exifツールこんな図書館ですね。exiftoolこのプログラムは、独自のプロフェッショナルツールを作成したい人とプログラムをサポートするために開発され、現在も開発されています。

Debianを使用している場合、Image::Exiftoolこれは機能しますexiftoolsudo apt-get install libimage-exiftool-perl他のディストリビューション用にパッケージ化されていることはほぼ確実です(たとえば、パッケージ名がCentos perl-Image-ExifTool)。

Image::Exiftoolさまざまな種類のファイルを扱うことができるので(学ぶための努力を最大限に活用できるので)これをお勧めしますが、これが唯一のPerlライブラリではありません。その他多数があります。MP4::情報そしてオーディオ::スキャン。これら2つはdebianlibmp4-info-perlにパッケージされていますlibaudio-scan-perl

Perlはディレクトリの作成やファイル名の変更などの操作も実行できます。シェルとは異なり、ファイル名と変数の引用符、スペース、またはシェルのメタ文字に関する問題はありません。シェルコードとawkコードでは、これらの問題のいくつかはすでに発生しており、これはメディアファイルでよく見られる長いファイル名とメタデータで発生する深刻な問題です。これはたくさんperlシェルやで書くよりも簡単で、awkシェル以外の言語で書くとエラーが発生する可能性も少なくなります。

perlawkUNIX環境の一部として作成されました。これはしばしば「スイスのチェーンソー」とも呼ばれ、すべての一般的なUNIXツール(、、、、などgrep)の機能を1つの言語にまとめます。sedtrawkcut

Perlは、Cに似た構文の基本的な理解があれば、習得しやすく手続き型プログラミングスタイルとオプションのオブジェクト指向プログラミングスタイルを組み合わせています。 今Perlを学ぶPerlに関する多くの情報と最も重要なPerl関連サイトへのリンクがある良い出発点です。彼ら「Perl初心者」オンラインチュートリアルとても良いです。

Perlで学ぶほ​​とんどの内容は、awk(awkの「CONDITION {ACTION}」ルールスタイルの文脈では言語もCに似ています)、grep( sedのように正規表現は+と-のようなPerl演算子にsedあります。その他のUnixツールの代わりに。s/search/replace/re.sub(search,replace,string)


Pythonにはファイルのメタデータを処理するためのライブラリモジュールもあるので良い選択ですが、私の考えではコマンドラインの「ツール」よりも「アプリケーション」を書くのに適しています。オブジェクト指向プログラミングスタイルはほとんど必須であり(Fortran以外のほとんどすべての他の言語とは異なり)、スペースとインデントは柔軟でなく構文的に重要ではありません(つまり、インデントが間違っている場合はコードの動作が異なり、特定の種類のエラーが発生する可能性があります)検出が困難です)。一般的なプログラミングの原則と実践に加えて、Pythonで学んだことは他のUNIXツールですぐに再利用することはできません。

おすすめ記事