perl:ファイルの文字列を二重引用符で置き換えます。

perl:ファイルの文字列を二重引用符で置き換えます。

フォローアップの質問https://unix.stackexchange.com/a/254637/18887

Bash変数には次の文字列があります

This rule forbids throwing string literals or interpolations. While JavaScript (and CoffeeScript by extension) allow any expression to be thrown, it is best to only throw <a href=\"https://developer.mozilla.org /en/JavaScript/Reference/Global_Objects/Error\"> Error</a> objects, because they contain valuable debugging information like the stack trace. Because of JavaScript's dynamic nature, CoffeeLint cannot ensure you are always throwing instances of <tt>Error</tt>. It will only catch the simple but real case of throwing literal strings. <pre> <code># CoffeeLint will catch this: throw \"i made a boo boo\" # ... but not this: throw getSomeString() </code> </pre> This rule is enabled by default.

ファイルのテキストをこの変数に置き換えたいと思います。

現在、私は次のようにしてこれを行います。perl -i -pe "s/_PLACEHOLDER_/$text/g" $file

しかし、テキストの構造"などによって

Backslash found where operator expected at -e line 6, near "Error\"
(Might be a runaway multi-line // string starting on line 1)
syntax error at -e line 6, near "Error\"
Can't find string terminator '"' anywhere before EOF at -e line 6.

ファイルのテキストを置き換える方法は?

ベストアンサー1

二重引用符で囲まれた変数をPerlに引数として渡すと、置換で変数の特殊文字を処理できます。

perl -i~ -pe 'BEGIN { $replace = shift }
              s/_PLACEHOLDER_/$replace/g
             ' "$text" "$file"

おすすめ記事