(file 1) の (file 2) のファイル名に含まれる任意の文字に対して awk を実行する最良の方法は何ですか?
これまでのコード:
$ sed -e 's/.*\ -\ //' -e 's/.mp3$//' File1.txt | while read z; do tit="$z" ; awk -v title="$tit" '{FS = "\t"} $2 ~ title {print $0}' File2.txt ; done
結果; ファイル名に ( が含まれるファイルにヒットした場合を除いて、機能しています。
考えられるすべてを一重引用符と二重引用符で囲んでみましたが、まだうまくいきません。
File1 : "Playlist" という名前で、区切り文字は " - " です。
- ピーター・トッシュ - Na Goa Jail (Bonus Track).mp3
File1 フィールドは次のとおりです。「アーティスト」「タイトル」
File2:名前は「Master-List」、区切り文字はタブ
- Peter Tosh Na Goa Jail 32000 /Music/Peter Tosh/Peter Tosh - Na Goa Jail (ボーナストラック.mp3
File2 フィールドは次のとおりです。「アーティスト」「タイトル」「ビットレート」「パス」
上記の例を使用すると...「プレイリスト」の各エントリに対して
- "Playlist" を使用して、Field1 と Field2 (アーティスト タイトル) の 2 つの変数を生成します。
- マスターリスト内で $title "Na Goa Jail (Bonus Track).mp3" を検索
- 一致する場合は、$artist も一致することを確認します
- $title と $artist が一致する場合は、Master-List の 4 番目の列を出力し、そうでない場合は "No Match" を出力します。