Skip to content

Commit 029bd3c

Browse files
New translations 2_grep_command.md (Italian)
1 parent e21ebcd commit 029bd3c

File tree

1 file changed

+280
-0
lines changed

1 file changed

+280
-0
lines changed
Lines changed: 280 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,280 @@
1+
---
2+
title: Comando Grep
3+
author: tianci li
4+
contributors: null
5+
tags:
6+
- grep
7+
---
8+
9+
# Comando `grep`
10+
11+
Il comando `grep` filtra il contenuto di file singoli o multipli. Esistono alcune varianti di questo strumento di comando, come `egrep (grep -E)` e `fgrep (grep -f)`. Per le informazioni non trattate, vedere [il manuale di `grep`](https://www.gnu.org/software/grep/manual/ "grep manual").
12+
13+
L'uso del comando `grep` è:
14+
15+
```text
16+
grep [OPTIONS] PATTERN [FILE...]
17+
grep [OPTIONS] -e PATTERN ... [FILE...]
18+
grep [OPTIONS] -f FILE ... [FILE...]
19+
```
20+
21+
Le opzioni sono principalmente suddivise in quattro parti:
22+
23+
- controllo delle corrispondenze
24+
- controllo del risultato
25+
- controllo della linea di contenuto
26+
- controllo di directory o file
27+
28+
controllo delle corrispondenze:
29+
30+
| opzioni | descrizione |
31+
| :----------------------- | :---------------------------------------------------------------------------------- |
32+
| -E<br/>--extended-regexp | Abilita ERE |
33+
| -P<br/>--perl-regexp | Abilita PCRE |
34+
| -G<br/>--basic-regexp | Abilita BRE di default |
35+
| -e<br/>--regexp=PATTERN | Abbinamento del modello, possono essere specificate più opzioni -e. |
36+
| -i | Ignora maiuscole e minuscole |
37+
| -w | Abbinare con precisione l'intera parola |
38+
| -f FILE | Ottenere i modelli da FILE, uno per riga |
39+
| -x | Corrispondenza del modello all'intera riga |
40+
| -v | Seleziona le righe di contenuto non corrispondenti |
41+
42+
controllo del risultato:
43+
44+
| opzioni | descrizione |
45+
| :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
46+
| -m NUM | Produce i primi risultati corrispondenti |
47+
| -n | Stampa i numeri di riga sull'output |
48+
| -H | Quando si cerca di abbinare il contenuto di più file, il nome del file viene visualizzato all'inizio della riga. Questa è l'impostazione predefinita |
49+
| -h | Quando trova uno o più ricorrenze all'interno di più file, all'inizio di ogni riga non mostra il nome del file di appartenenza della stringa |
50+
| -o | Elenca solo il pattern ricercato in tutti i file selezionati, senza scrivere l'intera riga di appartenenza |
51+
| -q | Non fornisce alcuna informazione, se non lo stato di output (0 se non trova ricorrenze, 1 se ne trova almeno una) |
52+
| -s | Non visualizza messaggi d'errore |
53+
| -r | Esegue la ricerca in modo ricorsivo nelle sotto directory |
54+
| -c | Visualizza, per ogni file, il numero di righe nelle quali trova un match |
55+
56+
gestione del contenuto delle linee:
57+
58+
| opzioni | descrizione |
59+
| :------ | :---------------------------------------------------------------------- |
60+
| -B NUM | Visualizza il NUM di righe che precedono quella con il match ricercato |
61+
| -A NUM | Visualizza il NUM di righe successive alla linea con il match ricercato |
62+
| -C NUM | Visualizza il NUM di righe che precedono e seguono il match ricercato |
63+
64+
gestione dei file o directory:
65+
66+
| opzioni | descrizione |
67+
| :------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
68+
| --include=FILE_PATTERN | Cerca soltanto i file con nome che corrisponda al FILE_PATTERN. I wildcard supportati per i nomi dei file sono \*, ?, [], [^], [-], {..}, {,} |
69+
| --exclude=FILE_PATTERN | Salta i file e le cartelle con nomi che corrispondono al FILE_PATTERN. I wildcard supportati per i nomi dei file sono \*, ?, [], [^], [-], {..}, {,} |
70+
| --exclude-dir=PATTERN | Esclude il nome delle cartelle specificato in PATTERN. I wildcard supportati per i nomi delle cartelle sono \*, ?, [], [^], [-], {..}, {,} |
71+
| --exclude-from=FILE | Esclude dalla ricerca le directory e file contenuti in FILE |
72+
73+
## Esempi di utilizzo
74+
75+
1. Opzione -f e opzione -o
76+
77+
```bash
78+
Shell > cat /root/a
79+
abcdef
80+
123456
81+
338922549
82+
24680
83+
hello world
84+
85+
Shell > cat /root/b
86+
12345
87+
test
88+
world
89+
aaaaa
90+
91+
# Usa ogni riga del file b come un pattern da ricercare nel file a e mostra le corrispondenze.
92+
Shell > grep -f /root/b /root/a
93+
123456
94+
hello world
95+
96+
Shell > grep -f /root/b /root/a -o
97+
12345
98+
world
99+
```
100+
101+
2. Ricerca di pattern multiplo (usare l'opzione -e)
102+
103+
```bash
104+
Shell > echo -e "a\nab\nbc\nbcde" | grep -e 'a' -e 'cd'
105+
a
106+
ab
107+
bcde
108+
```
109+
110+
oppure:
111+
112+
```bash
113+
Shell > echo -e "a\nab\nbc\nbcde" | grep -E "a|cd"
114+
a
115+
ab
116+
bcde
117+
```
118+
119+
3. Rimuove le righe vuote e le righe di commento dal file di configurazione
120+
121+
```bash
122+
Shell > grep -v -E "^$|^#" /etc/chrony.conf
123+
server ntp1.tencent.com iburst
124+
server ntp2.tencent.com iburst
125+
server ntp3.tencent.com iburst
126+
server ntp4.tencent.com iburst
127+
driftfile /var/lib/chrony/drift
128+
makestep 1.0 3
129+
rtcsync
130+
keyfile /etc/chrony.keys
131+
leapsectz right/UTC
132+
logdir /var/log/chrony
133+
```
134+
135+
4. Visualizza i primi 5 risultati corrispondenti
136+
137+
```bash
138+
Shell > seq 1 20 | grep -m 5 -E "[0-9]{2}"
139+
10
140+
11
141+
12
142+
13
143+
14
144+
```
145+
146+
oppure:
147+
148+
```bash
149+
Shell > seq 1 20 | grep -m 5 "[0-9]\{2\}"
150+
10
151+
11
152+
12
153+
13
154+
14
155+
```
156+
157+
5. Opzione -B e opzione -A
158+
159+
```bash
160+
Shell > seq 1 20 | grep -B 2 -A 3 -m 5 -E "[0-9]{2}"
161+
8
162+
9
163+
10
164+
11
165+
12
166+
13
167+
14
168+
15
169+
16
170+
17
171+
```
172+
173+
6. Opzione -C
174+
175+
```bash
176+
Shell > seq 1 20 | grep -C 3 -m 5 -E "[0-9]{2}"
177+
7
178+
8
179+
9
180+
10
181+
11
182+
12
183+
13
184+
14
185+
15
186+
16
187+
17
188+
```
189+
190+
7. Opzione -c
191+
192+
```bash
193+
Shell > cat /etc/ssh/sshd_config | grep -n -i -E "port"
194+
13:# If you want to change the port on a SELinux system, you have to tell
195+
15:# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
196+
17:#Port 22
197+
99:# WARNING: 'UsePAM no' is not supported in RHEL and may cause several
198+
105:#GatewayPorts no
199+
200+
Shell > cat /etc/ssh/sshd_config | grep -E -i "port" -c
201+
5
202+
```
203+
204+
8. Opzione -v
205+
206+
```bash
207+
Shell > cat /etc/ssh/sshd_config | grep -i -v -E "port" -c
208+
140
209+
```
210+
211+
9. Filtra i file in una cartella aventi righe corrispondenti alla stringa (Escludi i file nelle cartelle secondarie)
212+
213+
```bash
214+
Shell > grep -i -E "port" /etc/n*.conf -n
215+
/etc/named.conf:11: listen-on port 53 { 127.0.0.1; };
216+
/etc/named.conf:12: listen-on-v6 port 53 { ::1; };
217+
/etc/nsswitch.conf:32:# winbind Use Samba winbind support
218+
/etc/nsswitch.conf:33:# wins Use Samba wins support
219+
```
220+
221+
10. Filtra i file di una directory che hanno righe corrispondenti alla stringa (include o esclude i file o le directory nelle sotto directory)
222+
223+
Includere la sintassi per file multipli:
224+
225+
```bash
226+
Shell > grep -n -i -r -E "port" /etc/ --include={0..20}_*
227+
/etc/grub.d/20_ppc_terminfo:26:export TEXTDOMAIN=grub
228+
/etc/grub.d/20_ppc_terminfo:27:export TEXTDOMAINDIR=/usr/share/locale
229+
/etc/grub.d/20_linux_xen:26:export TEXTDOMAIN=grub
230+
/etc/grub.d/20_linux_xen:27:export TEXTDOMAINDIR="${datarootdir}/locale"
231+
/etc/grub.d/20_linux_xen:46:# Default to disabling partition uuid support to maintian compatibility with
232+
/etc/grub.d/10_linux:26:export TEXTDOMAIN=grub
233+
/etc/grub.d/10_linux:27:export TEXTDOMAINDIR="${datarootdir}/locale"
234+
/etc/grub.d/10_linux:47:# Default to disabling partition uuid support to maintian compatibility with
235+
236+
Shell > grep -n -i -r -E "port" /etc/ --include={{0..20}_*,sshd_config} -c
237+
/etc/ssh/sshd_config:5
238+
/etc/grub.d/20_ppc_terminfo:2
239+
/etc/grub.d/10_reset_boot_success:0
240+
/etc/grub.d/12_menu_auto_hide:0
241+
/etc/grub.d/20_linux_xen:3
242+
/etc/grub.d/10_linux:3
243+
```
244+
245+
Se devi escludere un singola directory, utilizza la seguente sintassi:
246+
247+
```bash
248+
Shell > grep -n -i -r -E "port" /etc/ --exclude-dir=selin[u]x
249+
```
250+
251+
Se devi escludere più cartelle, utilizza la seguente sintassi:
252+
253+
```bash
254+
Shell > grep -n -i -r -E "port" /etc/ --exclude-dir={selin[u]x,"profile.d",{a..z}ki,au[a-z]it}
255+
```
256+
257+
Se devi escludere un singolo file, utilizza la seguente sintassi:
258+
259+
```bash
260+
Shell > grep -n -i -r -E "port" /etc/ --exclude=sshd_config
261+
```
262+
263+
Se devi escludere più file, utilizza la seguente sintassi:
264+
265+
```bash
266+
Shell > grep -n -i -r -E "port" /etc/ --exclude={ssh[a-z]_config,*.conf,services}
267+
```
268+
269+
Se devi escludere più file e cartelle in un unico comando, utilizza la seguente sintassi:
270+
271+
```bash
272+
Shell > grep -n -i -r -E "port" /etc/ --exclude-dir={selin[u]x,"profile.d",{a..z}ki,au[a-z]it} --exclude={ssh[a-z]_config,*.conf,services,[0-9][0-9]*}
273+
```
274+
275+
11. Conta tutti gli indirizzi IPv4 di sistema
276+
277+
```bash
278+
Shell > ip a | grep -o -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | grep -v -E "127|255"
279+
192.168.100.3
280+
```

0 commit comments

Comments
 (0)