Usando 'grep -e' e le espressioni regolari più avanzate


0

Sto cercando di usare la seguente espressione regolare in grep (cerca un caso misto PNG File).

[A-Z]+[\w.]*\.[pPnNgG]{3}[\\"')]*.*$

Quando inserisco il comando, la mia shell mostra a > cercando più input.

posso usare grep per alcune espressioni regolari di base, ma non ho mai avuto la possibilità di usarlo con espressioni regolari più avanzate.

FWIW, questo è in Cygwin su Windows 7.


Si prega di fornire maggiori dettagli come l'esempio di testo che stai cercando con grep.
Paweł Nadolski

Vuoi trovare tutti i PNG indipendentemente da come sono scritti?
Nifle

@Nifle: no, mi piacerebbe trovare qualsiasi png che abbia almeno una lettera maiuscola nel loro percorso. Il nostro processo di implementazione forza tutti i file in minuscolo, quindi devo assicurarmi che ogni riferimento a questi file sia tutto in minuscolo.
Alan

Allora dovresti trovare tutto .pPnNgG file a prescindere da come sono scritti / cased e li rinominano $name.png , rinominando un file che ha già un nome $something.png non farai la differenza
Nifle

@ nifle: che in realtà non aiuterà. Non voglio rinominare alcun file (la nostra procedura di distribuzione usa sempre nomi in minuscolo) Avrei dovuto scrivere che voglio trovare riferimenti a questi nomi di maiuscole e minuscole all'interno di vari file di codice, così posso assicurarmi che nessun nome di maiuscolo e minuscolo diventi nel nostro codice base.
Alan

Risposte:


2

Non sei fuggito " personaggio. La doppia barra rovesciata prima verrà sostituita da una barra rovesciata singola e " è lasciato non sfuggito. Rimuovere una barra rovesciata o aggiungerne una.

Prova questa espressione regolare:

grep -i '^[0-9a-z _]\+\.png\([^0-9a-z]+\|$\)' file | grep -v '^[0-9A-Za-z _]\+\.\(png\|PNG\)\([^0-9A-Za-z]\|$\)'

Corrisponde a tutte le righe che contengono dall'inizio della riga:

  • almeno sui personaggi 0-9 (intervallo di 0, 1, ..., 9 personaggi), a-z ' ' (spazio), '_'
  • un punto (ha bisogno di essere sfuggito con la barra rovesciata, altrimenti significherà "qualsiasi singolo carattere")
  • 'png' (o 'Png', ecc. perché -i è aggiunto)
  • e non seguito da nessuno di 0-9 e a-z personaggi (o A-Z perché -i è aggiunto).

-i - disabilita la distinzione tra maiuscole e minuscole


Grazie. In realtà ho bisogno che il test sia sensibile al maiuscolo / minuscolo (in particolare, cerca file di casi misti). Non trovo per abbinare su tutti i file png che sono tutti in minuscolo.
Alan

Comando Updaded per escludere file con estensione tutto in minuscolo o tutto maiuscolo. Dovrebbe visualizzare i file con .png case miste. Inoltre, è consentito terminare la riga subito dopo il nome del file.
Paweł Nadolski
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.