0

ncmpcpp からの出力を解析して、アーティストとトラックのタイトルを取得しようとしています。

からの出力ncmpcpp --now-playingは、次の形式を取ります。

(MM:SS) %ARTIST% - %TRACKTITLE%

例:

(4:46) A Perfect Circle - Imagine

Linux で利用可能な従来のパイピング ツール (head、sed、awk、grep) を使用して、括弧内の情報を削除し、残りを解析するにはどうすればよいですか?

awk を使用してみましたが、バンド名にスペースが含まれている可能性があり、%ARTIST% が複数の引数と見なされる可能性があるため効果的ではありません。

4

2 に答える 2

0

アーティスト名にハイフンが含まれている場合、これは失敗しますが、アーティストとタイトルの間の区切り文字であるハイフンに依存するものはすべて失敗します。

echo "(32:32) Album artist - This is the title - it's hyphenated" |
    awk 'match($0, /^\([0-9]{1,2}:[0-9]{2}\)\s([^-]*)\s-\s(.*)/, r) {print r[1];print r[2]}'

出力:

アルバムアーティスト
これがタイトルです - ハイフンでつながれています

編集

私はあなたの質問を誤解しているかもしれません - アーティストとタイトルを別々のフィールドに入れる必要がない場合は、これを使って時間を取り除いてください:

echo "(4:46) A Perfect Circle - Imagine" | sed -r 's/^\([0-9]{1,2}:[0-9]{2}\)\s//'

出力:

完璧な円 - 想像してみてください
于 2013-05-24T05:19:19.710 に答える