以下の内部ファイルパスを持つアセットファイルがあります"/Users/testuser/dev/app-path/widget"
。
test.js
[["[email protected]","/Users/testuser/dev/app-path/widget"]],"_development":true,
"_where":"/Users/testuser/dev/app-path/widget","author"
SED
すべての内部ファイルパスを次に置き換えようとします。空白/空ひも。私がgrep
次のことをするとき正規表現働く
grep -E '"/Users\/.*?"' ./resources/test.js
しかし、以下の正規表現を使用しようとすると、SED
私のファイルのファイルパスは次のようになります。いいえ空の文字列に置き換えられました。何が欠けているのかよくわかりません。提案してください。
find ./resources -type f -exec sed -i -e 's/"\/Users\/.*?"/""/g' {} \;
他の同様の投稿を見つけましたが、置き換えるべきものが見つかりませんでした"/Users/testuser/dev/app-path/widget"
- >""
正規表現が適用されます。正規表現 101:https://regex101.com/r/YycQkX/2/
答え1
ファイルを置き換えるには、"/Users/testuser/dev/app-path/widget"
POSIXデフォルト正規表現(BRE)を使用できます。""
find ./resources -type f -exec sed -i 's/"\/Users\/[^"]*"/""/g' {} +
この[^"]*
部分は文字ではなくシーケンスと一致します"
。
編集する:
スラッシュの脱出を防ぐために、交換時に別の区切り文字を使用することもできます。@エドモートン)、たとえば、次のよう:
に使用します/
。
find ./resources -type f -exec sed -i 's:"/Users/[^"]*":"":g' {} +