Cut (Unix): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Thijs!bot (discussione | contributi)
m robot Aggiungo: eo, nl, no, ro, sv
Luigi923 (discussione | contributi)
 
(42 versioni intermedie di 25 utenti non mostrate)
Riga 1:
{{Titolo errato|titolo=cutminuscolo}}
'''cut''' (dalla [[lingua inglese]] ''cut'', ''taglia'') è un comando dei [[Sistema operativo|sistemi operativi]] [[Unix]] e [[Unix-like]], e più in generale dei sistemi [[POSIX]]<ref>{{cita web
|url=https://www.opengroup.org/onlinepubs/000095399/utilities/cut.html
|titolo=cut
|accesso=14 giugno 2008
|sito=The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition
|lingua=en
}}</ref>, che legge uno o più [[file di testo]] (o lo ''[[standard input]]'') estraendo da ogni linea delle sezioni, definite in termini di [[byte]] oppure caratteri oppure [[Campo (informatica)|campi]], le quali sono poi mostrate sullo ''[[standard output]]''. È un tipo di [[Filtro (Unix)|filtro]].
 
== Sintassi ==
'''cut''' è un programma per [[Unix]] o sistemi [[Unix-like]] che stampa alcune sezioni di ogni linea di un file. È un tipo di [[filtro (Unix)|filtro]]. La sua sintassi è:
La sintassi generale di ''cut'' prevede le tre forme che seguono:
<tt>cut [opzioni] [file]</tt>
cut -b ''lista'' [-n] [--] [''file1'' [''file2'' …] ]
cut -c ''lista'' [--] [''file1'' [''file2'' …] ]
cut -f ''lista'' [-d ''carattere''] [-s] [--] [''file1'' [''file2'' …] ]
 
I parametri facoltativi ''file'' indicano i nomi dei file di testo da cui estrarre le informazioni. Se non sono specificati, i dati sono letti dallo ''standard input''. Uno dei parametri può essere un trattino ("<code>-</code>") per indicare di leggere in quel punto lo ''standard input''.
Il file su cui operare la selezione può essere fornito anche attraverso lo [[standard input]].
 
Il doppio trattino <code>--</code> (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.
==Opzioni principali==
===Definizioni===
Negli esempi seguenti si userà la seguente notazione:
 
Tra le opzioni principali vi sono:
*Una ''lista'' è indicata da uno o più ''intervalli'' separati da virgole (',');
;<code>-b ''lista''</code>: Estrae dalla linea i byte i cui indici sono specificati dal parametro ''lista''.
;<code>-c ''lista''</code>: Estrae dalla linea i caratteri i cui indici sono specificati dal parametro ''lista''.
;<code>-f ''lista''</code>: Estrae dalla linea i campi i cui indici sono specificati dal parametro ''lista''.
;<code>-d ''carattere''</code>: Se si estraggono campi tramite l'opzione <code>-f</code>, indica il carattere da usare come separatore tra i campi. Il carattere predefinito è il [[carattere di controllo]] ''tab''.
;<code>-n</code>: Se si estraggono byte tramite l'opzione <code>-b</code> e la codifica del testo in uso richiede più byte per carattere, assicura che le sequenze di byte che rappresentano il primo e/o l'ultimo carattere di una sezione siano estratte per intero.
;<code>-s</code>: Se si estraggono campi tramite l'opzione <code>-f</code>, indica di escludere le linee che non contengono il carattere separatore (il comportamento predefinito di ''cut'' prevede di riproporre in output tali linee senza modifiche).
 
Il parametro ''lista'' delle opzioni <code>-b</code>, <code>-c</code> e <code>-f</code> è un elenco di uno o più indici e/o intervalli di indici, separato da virgole ("<code>,</code>") o da spazi ("<code>&nbsp;</code>"), il quale seleziona all'interno delle linee di dati le sezioni da estrarre. Ciascun elemento dell'elenco può essere:
*Un ''intervallo'' è indicato da due numeri separati da un trattino ('-'); ad esempio sono intervalli "1-3", "4-42" e "1-6". È possibile usare intervalli incompleti nel modo seguente:
* un ''indice'' numerico, a partire da 1, che indica il byte, carattere o campo da selezionare;
**"-N", che corrisponde all'intervallo "1-N";
* un ''intervallo'' di indici nella forma <code>''min''-''max''</code> (ad esempio "<code>3-5</code>") che seleziona i byte, caratteri o campi compresi tra gli indici ''min'' e ''max'';
**"N-", che corrisponde all'intervallo che va da "N" fino alla fine della linea o all'inizio del prossimo intervallo.
* un ''intervallo'' di indici nella forma <code>''min''-</code> (ad esempio "<code>3-</code>") che seleziona i byte, caratteri o campi a partire dall'indice ''min'' fino al termine della linea;
* un ''intervallo'' di indici nella forma <code>-''max''</code> (ad esempio "<code>-5</code>") che seleziona i byte, caratteri o campi a partire dall'inizio della linea fino all'indice ''max'';
 
L'ordine degli elementi nella lista non è rilevante, e nemmeno lo sono eventuali ripetizioni o intersezioni, in quanto le sezioni sono sempre presentate nell'ordine in cui appaiono nelle linee di dati originarie e senza ripetizioni.
È possibile ripetere e sovrapporre gli elementi di una lista, che possono essere indicati in qualsiasi ordine.
 
===Opzioni principali=Esempi ==
Estrae il primo ed il sesto campo dal file <code>/etc/passwd</code>, che usa il carattere <code>:</code> come separatore di campo:
cut -f 1,6 -d : /etc/passwd
 
Estrae i primi dieci caratteri da ogni linea che giunge dallo ''standard input'':
*-b <lista> Stampa solo i [[byte]] la cui posizione è compresa negli intervalli indicati in <lista>
cut -c -10
 
Estrae i byte che vanno dal quinto al decimo, il sedicesimo e dal ventesimo in poi di ogni linea del file <code>prova.txt</code>:
*-c <lista> Stampa solo i caratteri la cui posizione è compresa negli intervalli indicati in <lista>. Questa opzione potrebbe potrebbe produrre un'[[output]] diverso rispetto all'opzione "-b" in caso di testo con caratteri multi-byte
cut -b 5-10,16,20- prova.txt
 
== Alternative ==
*-d <carattere> Indica il separatore dei campi per l'opzione "-f"
Le capacità di estrazione di ''cut'' sono alquanto ridotte, il che limita il suo utilizzo ai casi più semplici; esso infatti:
* non permette di riordinare e/o ripetere le sezioni estratte;<ref name="multipass">
Ciò si può ottenere effettuando più passaggi sugli stessi file di input, per produrre file temporanei da unire poi con i comandi [[Join (Unix)|join]] e [[Paste (informatica)|paste]].</ref>
* non permette di estrarre solo parte dei dati delle sezioni indicate;<ref name="multipass"/>
* non permette di specificare come separatore dei campi una ''sequenza'' di spazi (non è ad esempio adatto a estrarre dati dall'output del comando [[Ls (Unix)|ls]]).
 
Se ciò fosse necessario, si può ricorrere a degli ''[[script]]'' nel [[Awk|linguaggio AWK]] o all'uso del comando [[sed (Unix)|sed]], che offrono maggiori possibilità in tal senso.
*-f <lista> Stampa solo i campi indicati in <lista>. Il separatore di [[default]] è il carattere di tabulazione
 
== Note ==
[[Categoria:Programmi POSIX]]
<references />
 
== Voci correlate ==
[[en:Cut (Unix)]]
* [[eo:CutAwk]]
* [[nl:Cutjoin (Unix)]]
* [[paste (informatica)]]
[[no:Cut]]
 
[[pt:Cut]]
== Collegamenti esterni ==
[[ro:Cut, Alba]]
* {{cita web
[[sv:Cut]]
|url=https://www.gnu.org/software/coreutils/manual/html_node/cut-invocation.html
|titolo=cut: Print selected parts of lines
|accesso=14 giugno 2008
|sito=GNU Coreutils manual
|lingua=en
}}
 
{{Comandi Unix}}
{{Portale|informatica}}
 
[[Categoria:ProgrammiComandi POSIXUnix]]
[[Categoria:Coreutils]]