ファイル内で変数を見つけて置き換えるPerlの1つのライナー

I'm trying to find

  • some_link
  • and replace it with nothing. To do this, I'm running the command below but it's recognizing $ as part of a regex.

    perl -p -i -e 's/

  • \n//g' file.html

    I've tried the following things,
    ${SOMEVAR}
    \$SOMEVAR
    FIND="

  • 9
    @Chriszumaあなたは実際の-pieの組み合わせを試しましたか?
    追加された 著者 tadmc,
    -i フラグが何をしているのか調べてくれてありがとう。それはクールだ。プロのヒント:すべてのフラグを次のようにまとめることができます: -pie
    追加された 著者 Chriszuma,
    また、固体の最初の投稿に名声。問題は簡潔に説明され、解決策が試されました。よくやった。
    追加された 著者 Chriszuma,
    ダング、私はしなかった。これらの3つを組み合わせることはできないようですが、 -i -pe を実行することはできます。
    追加された 著者 Chriszuma,

    2 答え

    Bashは二重引用符で変数の置換を行います。

    これはうまくいくはずです:

    perl -p -i -e "s/
  • \n//g" file.html

    EDIT Actually, that might act weird with the \n in there. Another approach is to take advantage of Bash's string concatenation. これはうまくいくはずです:

    perl -p -i -e 's/
  • \n//g' file.html

    EDIT 2: I just took a closer look at what you're trying to do, and it's kind of dangerous. You're using the greedy form of .*, which could match a lot more text than you want. Use .*? instead. I updated the above regexes.

  • 11
    追加された
    スイッチの順序は私の場合(正規表現のサポートのために sed -ri から引き継がれています)問題はありませんでしたが、ショート・フォーム・スイッチを分けなければなりませんでした。 code>私の -e パラメータにperlスクリプトを開くことができません::そのようなファイルまたはディレクトリはありません
    追加された 著者 Pysis,

    "SOMEVAR"が本当に外部変数であれば、それを環境にエクスポートして参照することができます:

    SOMEVAR=whatever perl -p -i -e 's/
  • \n//g' file.html
  • 1
    追加された