1

私の意図は、構成ファイルに行全体が存在するかどうかを判断することです。次に例を示します。

ポート.conf:

#NameVirtualHost *:80
NameVirtualHost *:80

今、私は検索したいのですが、検索したいのではNameVirtualHost *:80ありません#NameVirtualHost *:80!

これについて私が最初に考えたのは、もちろん、grep を使用することでした。このような:

grep -F "NameVirtualHost *:80" ports.confそれは私が望むものではない両方の行を私に与えています。2 番目に考えたのは、正規表現を次のように使用することでしたgrep -e "^NameVirtualHost \*:80" ports.conf。しかし、明らかに、特殊文字の行をエスケープして処理する必要があります*

これは大したことではないかもしれませんが、個々の検索文字列を渡したいのですが、スクリプトを使用しているため、文字列のエスケープに煩わされたくありません。

私の質問は次のとおり です。特殊文字をエスケープするにはどうすればよいですか? または異なるツールで同じ結果を得るにはどうすればよいですか?

4

3 に答える 3

4

grep-xまさにそれを行うオプションがあります:

-x, --line-regexp
          Select only those matches that exactly match the whole line.  (-x is specified by POSIX.)

したがって、最初のコマンドを に変更するとgrep -Fx "NameVirtualHost *:80" ports.conf、必要なものが得られます。

于 2013-09-26T08:51:04.070 に答える
0

正規表現をシンプルに保つために私が考えることができる最も簡単な方法は

grep -F "NameVirtualHost *:80" ports.conf | grep -v "^#\|^\/\/"
于 2013-09-26T08:52:44.140 に答える