27

XXXコマンドの形式ではないラテックスドキュメント内の の出現回数を見つけたい\XXX. したがって、バックスラッシュが前に付いていない出現箇所を探しています。

私は次のことを試しました:

grep -c -e '(?<!\)XXX' test.tex    #result: grep: Unmatched ) or \)
grep -c -e '(?<!\\)XXX' test.tex   #result: 0
grep -c -e "(?<!\\)XXX" test.tex   #result: -bash: !\\: event not found

意図したとおりに機能するものはありません。実際、最後のエラー メッセージがまったくわかりません。

私のtest.texには次の行のみが含まれています

%test.tex

XXX

\XXX

したがって、期待される結果は1です。

何か案は?

Ps .: 私は bash で作業しています。

4

4 に答える 4

54

標準正規表現も拡張正規表現も、後読みをサポートしていません。Perl 互換の正規表現を使用します。

grep -P '(?<!\\)xxx' test.tex
于 2012-07-27T09:37:41.300 に答える
1

使ってみて

grep -P '(?<!\\)\bXXX\b' test.tex
于 2012-07-27T15:13:08.890 に答える