私のファイルには、スクリプトを使用して調整したい次の行が含まれています。
module.exports = {
parserOptions: {
project: ['./tsconfig.json'],
},
... more stuff here
}
だからこんな感じです。私は結果の空白についてあまり気にしません。
module.exports = {
parserOptions: {
project: ['./tsconfig.json'],
tsconfigRootDir: __dirname
},
... more stuff here
}
私が今持っているものは次のとおりです。
sed -r "s/project:\s*\['.\/tsconfig.json'\],/project:\['.\/tsconfig.json'\],\ntsconfigRootDir\:__dirname/g" filename
しかし、それは一致しませんでした。このウェブサイトで一致パターンを試しました。https://sed.js.org/index.html?snippet=y7KG95そこから私が望む結果を得ました。私も試してみましたが、sed -E
運がありませんでした。
スクリプト設定がうまくいくと言いたいです。そう簡単なものを変更するとうまくいくs/project/projectA/g
からです。
ありがとうございます!
macOS Monterey 12.5.1の使用
答え1
-r
すべて GNU-isms である 、\s
と で\n
置き換えています (\s
もちろん Perl'ism に近いです)。これも\:
非標準です。しかし、あなたは\
目の前で.
消えました。
標準的に構文は次のとおりです。
sed 's@^\([[:blank:]]*\)project:[[:blank:]]*\['\''\./tsconfig\.json'\''\]@&,\
\1tsconfigRootDir: __dirname@g' filename
[[:blank:]]
\s
(まあ、\s
それはもっと多いでしょうが、ここではスペース(perlで)と一致する[[:space:]]
のに十分でなければなりません)の代わりに、改行文字を置き換えに含めるための改行文字が続きます。\h
\
project
追加された行を同じインデントにインデントするために、行の先頭のスペースをキャプチャします(キャプチャ\1
グループ呼び出し)。
構文の確認あなたの sed
実装とバージョンの確認それさまざまな実装やバージョンを説明できるインターネット上の任意のページを含めるか置き換えるman
ドキュメントです。info
sed
このユーティリティのPOSIX 2018標準仕様も参照してください。そこ。