コマンドの出力を変数に保存

コマンドの出力を変数に保存

このコマンドは、mp3形式と呼ばれるファイルに次の出力を提供しますmid3v2 -l someFile.mp3someFile.mp3

IDv2 tag info for someFile.mp3
APIC=cover front,  (image/jpg, 52016 bytes)
TALB=someAlbumName
TCON=amusicGenre
TDRC=2000
TIT2=songname
TPE1=singer
TPE2=singer
TRCK=1

tさらなる処理のために、TPE1の値を変数に保存したいと思います。どうすればいいですか?

ベストアンサー1

この質問に答える方法はいくつかあります。
最初のステップは、コマンドの出力がパイプを介して別のコマンドとして受け取られるか、変数にキャプチャされる可能性があることを理解することです。

cmd | next command ... etc
var=$(cmd)

線を選択し、記号の後に続くものをさらに選択するプロセスは=「テキスト処理」と呼ばれ、シェルはこれには適していません。

一般的な方法はsedです。

 $ mid3v2 -l someFile.mp3 | sed -En 's/^TPE1=(.*)$/\1/p'
 Singer

そして結果を変数にキャプチャします。

$ t=$(mid3v2 -l someFile.mp3 | sed -En 's/^TPE1=(.*)$/\1/p')
$ echo "$t"
Singer

単純シェルには単純な等価物はありません。正規表現は親シェル(ksh、bash、zsh)で使用できます。どのようなシェルを使用しますか?

おすすめ記事