私は現在、最新のリリースバージョンのdocker-compose
。
curl --silent "https://api.github.com/repos/docker/compose/releases/latest" | grep "tag_name" | sed -E 's/.*"([^"]+)".*/\1/'
これは私のコードではありません。コピーして貼り付けたのに効果があってもっと学びたかったです。特に私はこのコマンドに興味がありますsed
。誰でも私がよりよく理解するのを助けることができますか?
sed -E 's/.*"([^"]+)".*/\1/'
基本的に私は文字列を理解していません。私はこれらの項目を個別に知っています(.*
=すべての文字または文字、[^"]
=未知のすべての項目を許可"
)。しかし、このように書くと、どのように機能するのかわかりません。
コマンドなしのコマンド出力sed
:"tag_name": "1.22.0",
コマンドの出力は次のとおりですsed
。1.22.0
ベストアンサー1
sed -E 's/.*"([^"]+)".*/\1/
-E
:sed
拡張正規表現を使用します。- 's': 代替値。
/
:使用するパターンと代替区切り記号。.*"([^"]+)".*
:正規表現を説明する最良の方法は、画像を使用することです。
デフォルトでは、2つの引用符ブロックを持つすべての行を一致させ、最初のグループ内に2番目の引用符(引用符を除く)を入れます。/
: 正規表現と置換式の区切り文字\1
1.22.0
: この例では、元の行をグループ番号 1 に置き換えます。/
: 最後の区切り文字の後にはオプションがないため、1 行に 1 回だけ置き換えられます。
これが十分に説明されることを願っています。
より視覚的な方法で正規表現を読む必要がある場合は、次のものを使用できます。ウェブサイト正規表現本当にすごいです。