2017-02-09 3 views
1

Wie verwenden Sie grep, um eine Textdatei nach einem Muster wie ABC='123' zu suchen?Wie macht man eine Grep-Regex-Suche nach einfachen Anführungszeichen?

Ich bin derzeit mit:

grep -rnwi some/path -e "ABC\s*=\s*[\'\"][^\'\"]+[\'\"]" 

aber dies findet nur Text wie ABC="123". Es fehlen alle Instanzen, die einfache Anführungszeichen verwenden. Was ist los mit meiner Regex?

+0

für BRE So kann auch Ihr regex geschrieben werden , müssen Sie '\ +' verwenden oder den aktuellen Regex mit '-E' op verwenden zu verwenden ERE – Sundeep

+0

@Sundeep '+' ist nicht in BRE überhaupt, aber GNU Grep BRE unterstützt es als eine Erweiterung. –

+0

@BenjaminW. da OP '-r' verwendet hat, vermutete ich GNU grep – Sundeep

Antwort

1

Sie verwenden eine PCRE. Also, Sie brauchen die -P Flagge. So verwenden Sie diese:

grep -rnwi some/path -P "ABC\s*=\s*[\'\"][^\'\"]+[\'\"]" 

Wir haben keine \\ für einfache Anführungszeichen innerhalb der Zeichenklassen müssen.

"ABC\s*=\s*['\"][^'\"]+['\"]" 

Eingabedatei::

ABC="123" 
ABC='123' 

Run grep mit PCRE:

grep -P "ABC\s*=\s*['\"][^'\"]+['\"]" input.txt 

Ausgang:

ABC="123" 
ABC='123' 
Verwandte Themen