A volte potrebbe essere necessario cercare una parola particolare o una stringa all'interno di un file. Per fare ciò, quasi tutti gli editor di testo hanno alcune implementazioni della GUI per aiutarti. Ma per gli utenti Linux, è molto più produttivo e conveniente eseguire queste ricerche dalla riga di comando.
In effetti, Linux ha un'utilità della riga di comando potente e conveniente:il comando grep per questo scopo. Usando questo, puoi cercare una stringa particolare non solo in un file ma in più file per una ricerca più completa.
Tuttavia, prima di poter utilizzare il comando grep, devi prima sapere come funziona e le sue sintassi. E quindi, per aiutarti, abbiamo messo insieme una guida dettagliata sull'uso del comando grep per aiutarti a trovare le stringhe in un file su Linux. Non solo, ma ti mostreremo anche come cercare stringhe nei file tramite l'editor di testo della riga di comando e l'editor di testo della GUI.
Nota:Per questo tutorial, abbiamo creato due file di testo demo:demofile.txt e demofile02.txt. Useremo il comando grep per trovare le stringhe in questi file. Ecco uno sguardo al contenuto di entrambi questi file in modo da sapere come funzionano i comandi.
Contenuto di demofile.txt:
This is a demo file that I have created for demonstration purposes. This contains a bunch of words to create sentences that finally end with a period. This is for the grep example.
Contenuto di demofile02.txt:
This is another demo file that I'll use for this demonstration. This one is similar to the last one as it contains three lines with some words. This second file will help to provide some diversified examples.
Trovare stringhe in un file tramite la riga di comando (metodo GREP)
GREP è l'abbreviazione di Global Regular Expression Print. È "Globale" perché può cercare l'intero sistema Linux. "Espressione regolare" è ciò che chiamiamo il modello di ricerca del testo che utilizzeremo con il comando. E "Stampa" significa che stamperà i risultati della ricerca non appena trova una corrispondenza in base all'espressione regolare fornita.
Ora che hai un'idea di cosa sia il comando grep, vediamo come possiamo usarlo. Ecco la sintassi per usare il comando grep per trovare una stringa in un file:
$ grep string filename
Dovrai sostituire l'espressione "stringa" con l'"espressione regolare" che desideri utilizzare e il "nomefile" con il nome del file in cui vuoi cercare la stringa.
#1. Utilizzo di GREP per trovare una stringa in un file
Quindi, diciamo che se vuoi cercare la parola "dimostrazione" nel file "demofile.txt", dovrai usare questo comando:
$ grep demonstration demofile.txt
Che dà l'output:
Come puoi vedere, il comando recupera l'intera riga contenente la stringa fornita. Se la stringa specificata si trova su più righe, le stamperà tutte. Vediamo se funziona cercando la stringa “This” nel file “demofile.txt”.
$ grep This demofile.txt
E l'output è:
Nota come hai usato prima la stringa "questo" e non ha stampato nulla. È solo quando inserisci "Questo" che ottieni una corrispondenza. Pertanto, dovresti ricordare che il comando grep fa distinzione tra maiuscole e minuscole.
Per ignorare il caso, dovrai invece inserire questo comando:
$ grep -i this demofile.txt
Come puoi vedere ora, anche se la stringa fornita è "this", il comando corrisponde a "This" e stampa quella risposta.
#2. Utilizzo di GREP per trovare la stessa stringa in più file
Per cercare in più file la stringa fornita, tutto ciò che devi fare è aggiungere il comando con tutti i nomi dei file.
Ecco un esempio. Qui stiamo cercando la stringa “words” nei file “demofile.txt” e “demofile02.txt”:
$ grep words demofile.txt demofile02.txt
E l'output è:
Come puoi vedere, il comando grep non solo ti mostrerà il risultato corrispondente, ma etichetterà anche comodamente da quale file proviene.
#3. Utilizzo di GREP per trovare più stringhe in più file
Puoi anche usare grep per trovare più stringhe in uno o più file. Questa è la sintassi che dovrai usare:
$ grep -E 'pattern1|pattern2|pattern3|...' filename1 filename2 filename3 ...
L'opzione -E inserita tratta il modello seguente come un'espressione regolare estesa, che ci consente di cercare più stringhe.
Usiamo ora quanto appreso per cercare le stringhe “file” e “words” nei due file:“demofile.txt” e “demofile02.txt”:
$ grep -E 'file|word' demofile.txt demofile02.txt
E l'output è:
#4. Suggerimenti e trucchi per l'utilizzo del comando GREP per trovare le stringhe
Nonostante la sua semplicità generale, il comando grep è estremamente potente. Ecco alcuni modi in cui puoi utilizzare il comando grep per ricerche di stringhe avanzate.
Ad esempio, sapevi che puoi usare il comando grep con i caratteri jolly? Consideriamo questo comando:
$ grep word demofile*
Che dà l'output:
Come puoi vedere, il comando ha cercato e ora mostra i risultati per entrambi i file “demofile.txt” e “demofile02.txt”. Questo perché abbiamo utilizzato il carattere jolly asterisco (*) utilizzato per rappresentare una o più occorrenze di qualsiasi carattere.
Per ulteriori informazioni sui diversi tipi di caratteri jolly e su come utilizzarli, puoi leggere questo:I caratteri jolly in Linux spiegati con 10 esempi.
Andando avanti, il comando grep supporta anche tonnellate di opzioni di comando. Ne abbiamo già visti due ormai:
- -i:usato per ignorare maiuscole e minuscole.
- -E:usato per trattare la seguente stringa come un'espressione regolare estesa.
Ci sono molte altre opzioni di comando grep come:
- -r:fai una ricerca ricorsiva.
- -c:conta il numero totale di volte in cui è apparsa la stringa.
- -n:stampa il numero di riga in cui si è verificata la stringa.
- -o:stampa solo la stringa corrispondente e non l'intera riga.
Tutto ciò di cui abbiamo discusso fino ad ora dovrebbe essere sufficiente per aiutarti a cercare le stringhe nei file. Tuttavia, se vuoi padroneggiare il comando GREP, ti consigliamo di consultare questi due articoli:
- Utilizzo del comando GREP in Linux con esempi
- I 5 principali utilizzi del comando GREP in Linux
Trova le stringhe in un file tramite la riga di comando (usando gli editor di testo della riga di comando)
Il comando grep è un potente strumento che può aiutarti a eseguire ricerche avanzate per abbinare stringhe con diversi file e directory sul tuo PC Linux. Tuttavia, se hai già il file aperto in un editor di testo della riga di comando, non è necessario uscire dall'editor di file e utilizzare il comando grep.
In effetti, la maggior parte degli editor di testo da riga di comando è già dotata di una funzionalità di ricerca integrata.
Ora, è oltre lo scopo di questo tutorial coprire ogni singolo editor di testo della riga di comando e come trovare le stringhe in un file aperto in quell'editor di testo. Pertanto, esamineremo i due editor di testo da riga di comando più popolari che sei obbligato a utilizzare:
Come trovare una stringa di testo in nano?
Supponiamo che tu abbia il file aperto nell'editor di testo nano. In tal caso, tutto ciò che devi fare è premere Ctrl+W e troverai un nuovo prompt per digitare la stringa.
Una volta terminato, premi Invio e il cursore si posizionerà sul primo carattere della prima occorrenza della stringa cercata. Puoi continuare a premere Invio per passare alle altre istanze di stringa, se presenti.
Come trovare una stringa di testo in vim?
Se stai usando l'editor di testo vim, puoi digitare :/ seguito dalla stringa che desideri cercare e quindi premere Invio. Simile a prima, atterrerà il cursore sulla prima occorrenza della stringa cercata. Anche qui puoi continuare a premere Invio per passare alle altre istanze della stringa.
Trova le stringhe in un file tramite la riga di comando (metodo GUI)
C'è anche un metodo GUI per trovare le stringhe in un file. In sostanza, è simile alla funzione "trova e sostituisci" che puoi vedere su Microsoft Word; tuttavia, varierà in base all'editor di testo della GUI che stai utilizzando.
Ora, come sai, ci sono centinaia di editor di testo e non è pratico coprirli tutti qui. Tuttavia, funzionano tutti in modo simile, quindi non avrai problemi a lavorare con gli altri una volta che saprai come funziona uno di essi.
Per questo tutorial, utilizzeremo l'editor di testo predefinito fornito con Ubuntu, chiamato "Editor di testo".
Come puoi vedere dall'immagine, abbiamo aperto il demofile.txt nell'editor. Ora facciamo clic sul menu a discesa, che rivela le opzioni per "Trova" e "Trova e sostituisci", che possiamo utilizzare per trovare qualsiasi stringa nel file aperto.
Conclusione
Questo ci porta alla fine di questo breve tutorial sulla ricerca di stringhe in un file su Linux. Ci auguriamo che lo trovi utile e che ti abbia aiutato a diventare più produttivo con il modo in cui cerchi stringhe specifiche sul tuo sistema Linux.
Se hai domande, lasciaci un commento e saremo sicuri di aiutarti con le tue domande.
Se stai iniziando con Linux, non dimenticare di dare un'occhiata alla nostra serie Learn Linux. È pieno di fantastici tutorial, istruzioni e guide, progettati per principianti e utenti più esperti per aiutarti a diventare un vero utente esperto di Linux.