sedでハッシュ(#)を区切り文字として使用する方法

sedでハッシュ(#)を区切り文字として使用する方法

私はsedこの質問を頻繁に使用していないので、質問が単純すぎるとお詫び申し上げます。

以下はうまくいきます。

sed -i '/<\/IfModule>/i TEST' security2.conf

今、区切り記号として使用したいと思います#。なぜこれがうまくいかないのですか?

sed -i '#</IfModule>#i TEST' security2.conf

答え1

sed(1)のマニュアルページは次のとおりです。

/regexp/正規表現に一致する行に一致しますregexp

\cregexpc正規表現に一致する行に一致しますregexpcどんな文字でも可能です。

したがって、状況に応じて、または/regexp/に置き換えることができます。\#regexp#

sed -i '\#</IfModule>#i TEST' security2.conf

-i個人的には、私は正しく行ったと確信するまでテストします。

答え2

#ドキュメントを検索してみるとわかりsed(1)ます。

 [0addr]#
         The ``#'' and the remainder of the line are ignored (treated as a
         comment), with the single exception that if the first two charac-
         ters in the file are ``#n'', the default output is suppressed.
         This is the same as specifying the -n option on the command line.

だからあなたが書いたコメントはコードではありません。

関連情報