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