<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<head>

<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

  <meta http-equiv="Content-Type" content=
  "text/html; charset=us-ascii" />
  <meta http-equiv="Content-Language" content="it" />
  <meta name="keywords" content=
  "awk, awk dos, gawk, awk msdos, awk freedos, minilinux, umsdos, umsdos linux, bootlin, dos, dos download, dos disk, free dos,old pc,driver dos, ms dos, command line,dos usb, usare usb dos, usb dos, motto hairu, usbaspi.sys, ecologia informatica, programmi utili, consulenza,gironi,open source" />
  <meta name="description" content=
  "Un tool utile, libero e potente anche per il DOS: awk" />


<!--fogli di stile -->
<link rel="stylesheet" type="text/css" media="all" href="css/reset.css" />
<link rel="stylesheet" type="text/css" media="all" href="css/text.css" />
<link rel="stylesheet" type="text/css" media="all" href="css/960.css" />
<link rel="stylesheet" type="text/css" media="all" href="css/miostile.css" />

<!--jQuery-->
<script src="../javascript/jquery.js"></script>


  <title>AWK&nbsp;per DOS - sfruttare la potenza del linguaggio anche su vecchi pc</title>
</head>

<body>

<!--inizia il container 16 colonne-->
<div class="container_16">



<!--header-->
    <div class="grid_16">
<h1 class="titolo">C:\>  RetroPC</h1>
<h2 class="titolo">appunti e note di un estimatore della riga di comando</h2>
    </div>
<!--fine header-->

<!-- color switcher -->
    <div class="grid_16">
<ul id="color_switcher">
<li class="one"><a href="#">fosfori ambra</a></li>
<li class="two"><a href="#">fosfori verdi</a></li>
</ul>
    </div>


<!--parte centrale - 2 colonne-->
    <div class="grid_16 bordi">


<!--navigazione-->
    <div class="grid_4 alpha">

	<? include("nav.inc.php"); ?>

    </div>

<!--contenuti-->
    <div class="grid_12 omega">

<div class="main_content">

     <h1>Un linguaggio utile, libero e per qualsiasi sistema operativo: awk</h1>
      <p>
Anche la versione pi&ugrave; desueta di DOS pu&ograve; permetterci di filtrare testi o creare piccoli e utili database testuali, grazie all'eleganza concettuale di un linguagio esistente da moltissimi anni, ma ingiustamente misconosciuto.
<br />
Il curioso nome AWK deriva dalle iniziali dei suoi tre inventori: Aho, Weinberger e Kernighan (si', proprio quello del C).
<br />
L'implementazione GNU del linguagio si chiama GAWK, ed &egrave; disponibile per qualsiasi sistema UNIX, dove si rivela adattissimo all'elaborazione, ad esempio, dei files di log e per il lavoro di reportistica e controllo degli amministratori di sistema.
<br />
Ci&ograve; che me lo rende ancora pi&ugrave; simpatico, &egrave; che AWK &egrave; disponibile per qualsiasi sistema operativo, anche per dos. Vediamo allora, a grandi linee e per esempi, come funziona.
<br /><br />
Dovendo esprimere in sintesi la caratteristica principale di awk, direi che <b>il linguaggio si basa sul concetto di pattern - azione</b>.
<br />
Il testo in input viene scandito interamente alla ricerca del pattern
specificato.
Al verificarsi della condizione e' associata un'azione (o un blocco di azioni).
<br /><br />
Il commento, in AWK, e' preceduto dal cancelletto #.
<br />
Uno script awk puo' essere iniziato da <b>BEGIN</b> seguito da un blocco di istruzioni (sono in genere inizializzazioni di variabili), e chiuso da <b>END</b>, che
contiene un altro blocco di istruzioni da eseguire al termine dello script.
<br />
Per blocco si intende un gruppo di istruzioni contenute entro parentesi
graffe. A differenza del C, non e' necessario il punto e virgola al termine di
ogni istruzione.
<br /><br />
Un esempio rende l'idea meglio di tante parole. Supponiamo di voler <i>dare in pasto</i> ad AWK un file testuale, affinche' conteggi quante volte ricorra nel testo la parola "pippo".
<br />
Chiamo lo script ex1.awk, editandolo con l'editor di testo che preferisco:

<pre class="bordocodice">
BEGIN { cont=0 }
/pippo/ {cont++}
END {
print "La parola pippo ricorre",cont, "volte" }
</pre>

lo script viene eseguito da riga di comando come:<br /><br />
<pre class="bordocodice">
awk foo &lt;nome del file in cui effettuare la ricerca&gt;
</pre>

Vediamo un secondo esempio. Voglio stampare a video le righe di un file di testo (nel mio esempio: foo.txt) comprese tra la quinta e la decima. Ecco il codice, che si avvale della variabile speciale NR. L'uso dello script e' presentato nei commenti:
<br /><br />
<pre class="bordocodice">
# I valori inferiore e superiore (a e b) vanno indicati da linea di comando
# Es: awk rangeprn foo.txt a=5 b=10
# In output verranno stampate sullo STDOUT le righe del file foo comprese tra
# la quinta e la decima

{line[NR] = $0 }           # carica tutto il file in un array
END {while (a <= b) {      # finche' a e' minore o uguale a b
     print line[a]         # stampa la linea con indice [a]
     a++                   # incrementa a
                     }
     }
</pre>



</p>


<br />

Per provare a utilizzare awk sotto dos, basta <a href="download/awk-dos.zip" title="scarica awk per dos">scaricare la versione compilata per DOS </a>, dezipparla e mettersi al lavoro. Buon divertimento!
<br/><br/>
</div>


    </div>
<!--fine parte contenuti-->
</div>

<!--footer-->
    <div class="grid_16">
<p>
	<? include("footer.inc.php"); ?>
- P.Iva 03137610246
</p>
    </div>
<!--fine footer-->




</div>
<!--fine container-->


<!--lo switcher - verde o ambra-->
<script>
jQuery(document).ready(function($) {

        $("li.one").click( function(){ $
		("body").removeClass('color2').addClass("color1");
        $("a").css("color", "#FFBF00" );

	});

	$("li.two").click( function(){ $
		("body").removeClass("color1").addClass("color2");
        $("a").css("color", "#00cc02" );
	});

});

</script>

<!--analytics-->
	<? include("urchin.inc.php"); ?>
</body>

</html>
