新しいリストを生成するために出力拡張子を抽出する方法

新しいリストを生成するために出力拡張子を抽出する方法

こんにちは、私はイメージをインストールするためにcdemuを使用するスクリプトを作成しようとしています(gcdemuが私にはうまくいかなかったので)。

サポートされている形式を一覧表示しようとしています。

$ cdemu enum-parsers
Supported parsers:
  PARSER-MDX: MDX Image Parser
    application/x-mdx: DaemonTools images (*.mdx, *.mds)
  PARSER-HD: Hard-disk Image Parser
    application/x-apple-diskimage: Apple Disk image (*.cdr)
    application/x-apple-diskimage: Apple Disk image (*.smi)
    application/x-apple-diskimage: Apple Disk image (*.img)
  PARSER-READCD: READCD Image Parser
    application/x-cd-image: readcd images (*.toc)
  PARSER-ISO: ISO Image Parser
    application/x-cd-image: ISO images (*.iso, *.bin, *.img)
    audio/x-wav: WAV audio files (*.wav)
  PARSER-XCDROAST: X-CD-Roast Image Parser
    application/x-xcdroast: X-CD-Roast images (*.toc)
  PARSER-CCD: CCD Image Parser
    application/x-ccd: CloneCD images (*.ccd)
  PARSER-C2D: C2D Image Parser
    application/x-c2d: WinOnCD images (*.c2d)
  PARSER-CDI: CDI Image Parser
    application/x-cdi: DiscJuggler images (*.cdi)
  PARSER-B6T: B6T Image Parser
    application/x-b6t: BlindWrite 5/6 images (*.b5t, *.b6t)
  PARSER-NRG: NRG Image Parser
    application/x-nrg: Nero Burning Rom images (*.nrg)
  PARSER-CUE: CUE Image Parser
    application/x-cue: CUE images (*.cue)
  PARSER-TOC: TOC Image Parser
    application/x-cdrdao-toc: cdrdao images (*.toc)
  PARSER-MDS: MDS Image Parser
    application/x-mds: Alchohol 120% images (*.mds)
    application/x-xmd: GameJack images (*.xmd)
  PARSER-CIF: CIF Image Parser
    application/x-cif: Adaptec Easy CD/DVD Creator images (*.cif)

サポートされている型のリストを抽出して、次の新しい配列に入れる必要があります。

SuportedFormats=(
mdx
mds
cdr
smi
img
toc
ccd
c2d
cdi
b5t
b6t
nrg
cue
xmd
cif)

ただし、cdemuのバージョンによってはフォーマットリストが変更されることがあります。

もう一つは、大文字の拡張子を小文字に変更したいと思います。私は試した

tr '[:upper:]' '[:lower:]' "${1##*.}"

しかし、今はどのように使用しているのかわかりません。

ベストアンサー1

ファイル拡張子のリストを取得するには(GNU grepが必要です):

$ cdemu enum-parsers | grep -oP '(?<=\*\.)[^,)]*'
mdx
mds
cdr
smi
img
toc
iso
bin
img
wav
toc
ccd
c2d
cdi
b5t
b6t
nrg
cue
toc
mds
xmd
cif

これらの拡張を配列に入れるには、次のようにします。

$ SupportedFormats=($(cdemu enum-parsers | grep -oP '(?<=\*\.)[^,)]*'))

正しい配列があることを確認するには、次の手順を実行しますdeclare -p

$ declare -p SupportedFormats
declare -a SupportedFormats=([0]="mdx" [1]="mds" [2]="cdr" [3]="smi" [4]="img" [5]="toc" [6]="iso" [7]="bin" [8]="img" [9]="wav" [10]="toc" [11]="ccd" [12]="c2d" [13]="cdi" [14]="b5t" [15]="b6t" [16]="nrg" [17]="cue" [18]="toc" [19]="mds" [20]="xmd" [21]="cif")

小文字に変換

例のすべての拡張子は小文字です。実際に小文字に変換する必要がある場合は、次のものを使用できますtr

SupportedFormats=($(cdemu enum-parsers | grep -oP '(?<=\*\.)[^,)]*' | tr '[:upper:]' '[:lower:]'))

trUnicode 安全ではありません。文字列にUnicodeがある場合は、sedより良いオプションがあります(GNU sedが必要です)。

SupportedFormats=($(cdemu enum-parsers | grep -oP '(?<=\*\.)[^,)]*' | sed -E 's/[[:upper:]]/\L&/g'))

おすすめ記事