Perl RegEx nel terminale Mac: grep -p "^ ([^ \ t] * \ t) {2} mypattern \ t" textfile.txt non funziona

1

Sono un principiante nell'uso dei comandi di programmazione.

Perché {2} non è funzionale dopo ([^ \ t] * \ t) nel terminale macOS?

C'è qualche sito Web che fornisce Perl RegEx che funziona in mac? Grazie!

    
posta Kylie M. 30.08.2017 - 07:23
fonte

2 risposte

1

RegExPlanet offre una Pagina di prova delle espressioni regolari per Perl . Questa pagina funziona con Safari su macOS 10.12.

Potresti scoprire che grep incluso con macOS non include tutte le funzionalità che desideri. In tal caso, prova installando grep da Homebrew o MacPorts.

    
risposta data 30.08.2017 - 10:09
fonte
1

bsd grep non usa espressioni regolari perl. Leggi man grep e nota l'opzione -p . Di nuovo, man 7 re_format spiega come la regex funziona in macOS con strumenti come grep e sed .

Nella tua espressione regolare il carattere \t non viene interpretato come carattere di tabulazione. Quindi dovrai digitare il carattere letterale della tabulazione (control + v, tab) invece -

grep -E '^([^   ]*      ){2}mypattern ' FILE

oppure puoi usare la citazione di ansi-c (le parole della stringa $ 'stringa' sono trattate in modo speciale. La parola si espande in stringa, sostituendo caratteri backslash-escape come specificato dallo standard ANSI C.) -

grep -E $'^([^\t]*\t){2}mypattern\t' FILE

Puoi anche utilizzare perl direttamente -

perl -ne  'print if /^([^\t]*\t){2}mypattern\t/' FILE
    
risposta data 30.09.2018 - 12:29
fonte

Leggi altre domande sui tag