使用しようとしていますが、パターンにsed
角かっこ[]
とスラッシュ(/
)が含まれています。
引用してみましたが役に立ちません。
どうやって逃げますか?
例:
$ sed -i'.bak' "s/^includes[] =/;includes[] =/g" *.make
sed: 1: "s/^includes[] =/;includ ...": unterminated substitute in regular expression
$ sed -i'.bak' 's/^includes[] = includes/;includes/g' *.make
sed: 1: "s@^includes[] = i ...": unbalanced brackets ([])
$ sed -i'.bak' 's/^includes[] = foo/includes//;includes[] = foo/includes//g' *.make
sed: 1: "s/^includes[] = foo/inc ...": bad flag in substitute command: '/'
答え1
スラッシュをエスケープするには、スラッシュを除くすべての文字を使用して正規表現を区切ることができます。
たとえば( foo1/
-> foo2/
):
sed "s@foo1/@foo2/@"
sed "s|foo1/|foo2/|"
括弧をエスケープするには(スラッシュにも適用されます)、区切り文字の前にバックスラッシュ文字を配置して、その文字が文字通り処理されるようにする必要があります。
たとえば( foo[] =
-> ;foo[] =
):
sed "s/foo\[\] =/;foo\[\] =/"
man sed
(Sed 正規表現)。