1

私はsedに少し問題があります、私は次の行を置き換えたいです:

space here#Include "/usr/local/apache/conf/userdata/std/2/varr1/var2/*.conf"

また

space here# Include "/usr/local/apache/conf/userdata/std/2/varr1/varr2/*.conf"

(#の後のスペースに注意してください)

次へ

Include "/usr/local/apache/conf/userdata/std/2/varr1/varr2/*.conf"

次のコードは、スペースで始まらない行で機能します。

sed -i "s/# Include \"\/usr\/local\/apache\/conf\/userdata\/std\/2\/$varr1\/$varr2\/\*.conf\"/Include \"\/usr\/local\/apache\/conf\/userdata\/std\/2\/$varr1\/$varr2\/\*.conf\"/" file.name

どんな助けでもありがたいです、すべてに感謝します

4

2 に答える 2

0

区切り文字として使用する代わりに/、必要な任意の文字を選択できます。

例:

sed -i 's@@@g' file

したがって、すべてにバックスラッシュを付ける必要はありません。これは人間にとって読みにくいものです。

最後に、これを試してみてください:

 sed -i 's@^ *# *Include \+"/usr/local/apache/conf/userdata/std/2/varr1/var\+2/\*\.conf"@Include "/usr/local/apache/conf/userdata/std/2/varr1/varr2/*.conf"@g' file.name

ノート

  • *文字は、正規表現でのゼロまたはN回の出現を意味します
  • ^文字は行の先頭を意味します
  • *.は特殊文字であるため、バックスラッシュされています。後でとは、任意の1文字を意味します
于 2012-11-18T21:14:04.397 に答える
0

パスを記述する必要はありません。キャプチャするだけです。

sed -i 's!# *Include \("[^"]*"\)!Include \1!' input.file
于 2012-11-18T21:24:34.023 に答える