Terminale OS X: trova testo nei file che iniziano con la variabile


1

Devo cercare in una cartella di file e copiare tutto il testo che inizia con una variabile.

Quindi per esempio:

I file A.txt, B.txt, C.txt e D.txt contengono rispettivamente le stringhe "Hello1", "Hello2", "Hello3" e "Hello4". Ho bisogno di essere in grado di cercare tutte le parole che iniziano con "Ciao" e produrre il risultato.

In questo caso particolare verrebbero cercati A.txt, B.txt, C.txt e D.txt e l'output sarebbe

Hello1
Hello2
Hello3
Hello4

Mi sono guardato intorno e ho trovato quanto segue che mi consente di esportare tutti i file contenenti il ​​testo, tuttavia non sono sicuro di come o se questo può essere adattato per ciò di cui ho bisogno.

grep -l Hello *.txt

Risposte:


3

Probabilmente vuoi grep -ohw 'Hello[0-9]*' *.txt.

  • -o produce solo la parte corrispondente della linea
  • -hrende grepuscita suppress nome
  • -wfa la grepricerca solo di parole intere, quindi a Hello1Hello2non verrebbe abbinata (verrebbe abbinata due volte senza -wperò)

È necessario regolare il modello, poiché un letterale Hellocorrisponderà solo Helloe successivamente lo produrrà . Dal momento che si desidera far corrispondere Hello1attraverso Hello5(o anche Hello123), avete bisogno di più cifre ( [0-9]*).

Non dimenticare di citare il modello in modo che *non sia espanso dalla shell.


+1 per una risposta corretta, ma penso che l'OP non voglia il -opoiché dice "tutto il testo che inizia con una variabile".
Terdon,

Potrebbe essere. Il loro esempio è ambiguo al riguardo. Vediamo.
slhck,

Questo è fantastico, grazie! Il mio esempio è stato un po 'più semplice di quello di cui avevo effettivamente bisogno. Ho finito per andare con questo. grep -ohw 'FDRLocalizedString (@ ". *"' * .m
Brandon Schlenker,

0

Questo cerca parole che iniziano con una variabile.

var=Hello
grep -ho "\\<${var}[^[:blank:]]*" *.txt

grep's \<è l'ancora "inizio della parola".

Presumo che le tue parole siano delimitate in bianco, quindi il resto della parola è costituito da caratteri non vuoti. Puoi cambiarlo in numeri ( [0-9]*) o "caratteri di parole" simili a perl ( [[:alnum:]_]*) abbastanza facilmente.

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.