<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Regular Expressions &#8211; SMsoft &#8211; informatica e dintorni</title>
	<atom:link href="https://blog.smsoft.it/tag/regular-expressions/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.smsoft.it</link>
	<description>consigli settimanali su MacOS, GNU/Linux ed Open Source</description>
	<lastBuildDate>Tue, 07 Jan 2014 09:39:21 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=84271</generator>
	<item>
		<title>Espressioni regolari con grep</title>
		<link>https://blog.smsoft.it/2014/01/07/espressioni-regolari-con-grep/</link>
					<comments>https://blog.smsoft.it/2014/01/07/espressioni-regolari-con-grep/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 07 Jan 2014 09:39:21 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[Regular Expressions]]></category>
		<guid isPermaLink="false">http://blog.smsoft.it/?p=2606</guid>

					<description><![CDATA[Spesso preferisco utilizzare i comandi nella bash piuttosto che software grafici. Il motivo è legato all&#8217;immediatezza di utilizzo della bash: un comando al posto giusto ed il risultato è servito senza troppi fronzoli. Per cercare all&#8217;interno di files, il comando più utilizzato è sicuramente grep. Ad esempio, per cercare la stringa &#8220;pippo&#8221; all&#8217;interno di tutti ... <a title="Espressioni regolari con grep" class="read-more" href="https://blog.smsoft.it/2014/01/07/espressioni-regolari-con-grep/" aria-label="Per saperne di più su Espressioni regolari con grep">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[<p>Spesso preferisco utilizzare i comandi nella bash piuttosto che software grafici. Il motivo è legato all&#8217;immediatezza di utilizzo della bash: un comando al posto giusto ed il risultato è servito senza troppi fronzoli.</p>
<p>Per cercare all&#8217;interno di files, il comando più utilizzato è sicuramente grep. Ad esempio, per cercare la stringa &#8220;pippo&#8221; all&#8217;interno di tutti i files nella directory corrente, basta utilizzare:</p><pre class="urvanov-syntax-highlighter-plain-tag">grep pippo *</pre><p>se invece voglio cercare anche nelle sottodirectory, allora:</p><pre class="urvanov-syntax-highlighter-plain-tag">grep -R pippo *</pre><p></p>
<p>L&#8217;uso del semplice grep è molto intuitivo, ma si può fare di più.<br />
Ad esempio, per cercare la parola &#8220;pippo&#8221; (non più semplicemente la stringa &#8220;pippo&#8221; che potrebbe essere compresa in altre parole), si può usare:</p><pre class="urvanov-syntax-highlighter-plain-tag">grep -w pippo *</pre><p>e per avviare la ricerca senza distinzioni tra maiuscole e minuscole:</p><pre class="urvanov-syntax-highlighter-plain-tag">grep -i pippo *</pre><p></p>
<p>Veniamo ora a qualcosa di più articolato. Voglio cercare &#8220;pippo si&#8221; oppure &#8220;pippo-si&#8221; in tutti i file .txt della directory corrente:</p><pre class="urvanov-syntax-highlighter-plain-tag">grep pippo[- ] *.txt</pre><p></p>
<p>Chi di voi utilizza la bash ed il comando grep, avrà sicuramente usato le varie combinazioni che ho descritto, allora aggiungiamo ancora qualcosa che in alcuni casi può risultare davvero utile: le Espressioni Regolari o Regular Expression nelle ricerche con grep.</p>
<p>Innanzittuto una lista con la spiegazione breve dei carattery jolly da poter usare:</p><pre class="urvanov-syntax-highlighter-plain-tag">^        =    cerca le espressioni in zui la riga inizia per il successivo carattere, es ^A.
$        =    cerca le espressioni in cui la riga finisce per il precedente carattere, es  A$.
\        =    evita che il carattere successivo venga interpretato come speciale, es \^.
[ ]      =    cerca uno dei caratteri presenti tra parentesi, es [aeiou].
                    Usare il trattino "-" per un intervallo, es [0-9].
[^ ]     =    cerca un qualsiasi carattere tranne quelli nelle parentesi [ ], es [^0-9].
.        =    cerca un qualsiasi singolo carattere, tranne il fine riga.
*        =    cerca zero o più caratteri che lo precedono, es A*.
\{x,y\}  =    cerca da x a y occorrenze dei caratteri che precedono.
\{x\}    =    cerca esattamente x occorrenze che precedono.
\{x,\}   =    cerca x o più occorrenze che precedono.</pre><p></p>
<p>Ora vediamo qualche esempio commentato (il commento è tra le parentesi graffe {}):</p><pre class="urvanov-syntax-highlighter-plain-tag">grep smug *	      {cerca la stringa 'smug'}
grep '^smug' *	      {cerca la stringa 'smug' ad inizio riga}
grep 'smug$' *	      {cerca la stringa 'smug' a fine riga}
grep '^smug$' *	      {cerca se la riga contiene solo la stringa 'smug'}
grep '\^s' *	      {cerca la stringa '^s', "\" è un escape per ^}
grep '[Ss]mug' *      {cerca la stringa 'Smug' oppure 'smug'}
grep 'B[oO][bB]' *    {cerca le stringhe BOB, Bob, BOb o BoB }
grep '^$' *           {cerca le righe vuote}
grep '[0-9][0-9]' *   {cerca una coppia di numeri, es 00 o 10, 59}</pre><p></p>
<p>e poi ancora:</p><pre class="urvanov-syntax-highlighter-plain-tag">grep '^From: ' /usr/mail/$USER	  {elenco delle email}
grep '[a-zA-Z]'	                  {qualsiasi linea con almeno una lettera}
grep '[^a-zA-Z0-9]	          {qualsiasi linea che non contenga lettere o numeri}
grep '[0-9]\{3\}-[0-9]\{6\}'	  {999-999999, una stringa tipo numero di telefono}
grep '^.$'	                  {line con esattamente un carattere}
grep '"smug"'	                  {la stringa 'smug' senza virgolette}
grep '"*smug"*'	                  {la stringa 'smug', con o senza virgolette}
grep '^\.'	                  {qualsiasi riga che inizia con il punto "."}
grep '^\.[a-z][a-z]'	          {riga che inizia per punto "." e due lettere}</pre><p></p>
<p>enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2014/01/07/espressioni-regolari-con-grep/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
