文字列の2つの単語を2つの変数にコピーする

文字列の2つの単語を2つの変数にコピーする

通常、「something、numColor(number)」など、文字列から$ colorと$ number変数を取得したいと思います。色はW、U、B、R、Gです。色がない場合、カンマの前の文字列にlandまたはLという単語がない場合、変数の色はCでなければなりません。色が2つ以上の場合、$ color変数はMでなければなりません。以下は、文字列の外観と変数が何であるかの例です。

  • マジック、R(1) $color=R, $number=1
  • クリーチャー~野獣 5/3、4G (5) $color=G $number=5
  • 魔法、1WWU(4) $color=M $number=4
  • 伝説的な場所 $color=L $number=0
  • 遺物、0 $color=C $number=0
  • 伝説のクリーチャー - エルドラージュ15/15、15(15) $color=C $number=15

ベストアンサー1

次の手順でオンラインで作業を完了できますsed

sed '/(\?\([0-9]\+\))\?$/s//; number=\1/
     t n
     s/$/; number=0/
     :n
     /^.*, [0-9]\?\([WURBG]\)/{
                               s//color=\1/
                               s/[WURBG]\{2,\}/M/
                              }
     /[Ll]and/s/^[^;]*/color=L /
     /color/!s/^[^;]*/color=C /' file

しかし、putコマンドを提供したいと思いますscript file

#!/bin/sed -f
/(\?\([0-9]\+\))\?$/s//; number=\1/
t n
s/$/; number=0/
:n
/^.*, [0-9]\?\([WURBG]\)/{
    s//color=\1/
    s/[WURBG]\{2,\}/M/
}
/[Ll]and/s/^[^;]*/color=L /
/color/!s/^[^;]*/color=C /

それから

sed -f script.file file

上記のすべての正規表現は、あなたの例でのみテストされました。正しく機能しない問題が発生した場合は、少し調整して問題を解決できます。

おすすめ記事