私は、HTMLファイルのかなり単純なオカレンスを置き換えるために、sed
BRE(基本正規表現)の規則に従おうとしています。sedを使ってHTMLファイル内の可変テキストを置き換えよう
私はthe specを正しくフォローしていると思いますが、私の試みはうまくいっていません。
私がしたいのは、1つのメタタグの内容を新しいもの(私が書いているスクリプトの一部として計算している)で置き換えることです。基本的には、メタタグは次のようになります。
<meta version="v0.103.2" />
それは常にJSの正規表現にとして特徴付けることができ、その構文、次の属性が含まれます。私はそう
/version=\"v[0-9]+\.[0-9]+\.[0-9]+\"/g
を私は物事を誤解していない限り、この作業をするためにsedコマンドをたくさん試しました。文書化されているようには動作しないようです。私が試したコマンドのいくつか:
私は(あるため
sed
syntax changes between Unix/Linuxの問題)、Mac上だし、これは以下のコマンドで''
を占めています。
✗ sed -i -E '' s/version=\"v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+/version=\"whatever/g ./src/index.html ✗ sed -i -E '' s/version=\"v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+/version=\"whatever/g './src/index.html' ✗ sed -i -E s/version=\"v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+/version=\"whatever/g ./src/index.html ✗ sed -i -E s/version=\"v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+/version=\whatever/g ./src/index.html ✗ sed -i -E s/version=\"v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+/version=\"whatever/g ./src/index.html ✗ sed -i '' s/version=\"v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+/version=\"whatever/g ./src/index.html ✗ sed -i '' s/version=\"v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+/version=\whatever/g ./src/index.html ✗ sed -i '' s/version=\"v[:digit:]+\.[:digit:]+\.[:digit:]+/version=\whatever/g ./src/index.html ✗ sed -i '' s/v[:digit:]+\.[:digit:]+\.[:digit:]+/whatever/g ./src/index.html ✗ sed -i '' s/v[:digit:]+[:punct:][:digit:]+[:punct:][:digit:]+/whatever/g ./src/index.html ✗ sed -i '' s/v[:digit:][:punct:][:digit:][:digit:][:digit:][:punct:][:digit:]+/whatever/g ./src/index.html ✗ sed -i '' s/v[:digit:][:punct:][:digit:][:digit:][:digit:][:punct:][:digit:]/whatever/g ./src/index.html ✗ sed -i '' s/v[0-9]+\.[0-9]+.[0-9]+/whatever/g ./src/index.html ✗ sed -i '' s/version=\"[^ \"]+\"/whatever/g ./src/index.html ✗ sed -i '' s/version="[^ "]+"/whatever/g ./src/index.html ✗ sed -i '' s/version=\"[^\"]+\"/whatever/g ./src/index.html ✗ sed -i '' s/version=/whatever=/g ./src/index.html ✗ sed -i '' s/version=\"/whatever=\'/g ./src/index.html ✗ sed -i '' s/version=\"[^\"]/whatever=\"/g ./src/index.html
ヘルプ? はです。ファイルが正しく見つかりました。正規表現を含まないバージョンを試してみると(下から3番目を参照)、正しく置き換えられますが、何とか私の正規表現の構文がここで動作していないようです。
これを行うには、より簡単で信頼性の高い方法をお考えですか?
'sedの-i '' "S /バージョン= \" V [0-9] *試してみてください\ [。 0-9] * \。[0-9] * \ "/ whatever =/g"/src/index.html' –
@WiktorStribiżew - それがうまくいった!私はそれを選択することができるように答えをしたいですか? – Sasha