次のファイルがあります。
some
arbitrary number of
leading
lines
a prefix followed by wmd v0.0.0-20220406135915-ce5e3ee6c6bf
some
trailing
lines
これはファイルの外観を示す例にすぎません。私が興味のある製品ラインの定数は次のとおりです。
- いつもあり、
wmd v0.0.0-
その後ろに - 14桁の数字の後ろ
- ハイフンの後
- 英数字12文字
その部分をシェル変数の値で置き換えることができるsed
コマンドをどのように作成できますか?20220406135915-ce5e3ee6c6bf
new_text
つまり、new_text
値がある場合は、99999999999999-aaaaaaaaaaaa
次の出力を生成するコマンド部分を探したいと思います<whatever goes here>
。sed
$ sed -e "s/wmd v0.0.0-<whatever goes here>/wmd v0.0.0-$new_text/" my-file.txt
some
arbitrary number of
leading
lines
a prefix followed by wmd v0.0.0-99999999999999-aaaaaaaaaaaa
some
trailing
lines
ベストアンサー1
\{..\}
数量子を使用して、文字クラスが一致する必要がある回数を指定できます。
sed -e "s/wmd v0\.0\.0-[0-9]\{14\}-[0-9a-f]\{12\}/wmd v0.0.0-$new_text/"
# ~ ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~
また、ドットは正規表現で特別な意味を持ちます。バックスラッシュを使用すると、文字通り一致します。
また、$new_text
スラッシュまたはsedに固有の他の文字を含めると、コマンドが中断される可能性があります。