Manipolazioni elementari di flussi di testo strutturati

Documenti analoghi
L utility Unix awk [Aho-Weinberger-Kernighan]

L ambiente UNIX/Linux. I filtri Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab Shell. Lab-Shell 1

Corso di Laboratorio di Sistemi Operativi

L utility Unix awk [Aho-Weinberger-Kernighan]

Ulteriori comandi sui file

Shell BASH. Variabili Redirezione

Lab. di Sistemi Operativi - Esercitazione n 2- - comando di ricerca: grep -

- comando sort: con chiavi di ordinamento -

Lab. di Sistemi Operativi - Esercitazione n 1 - a.a. 2016/2017. Comandi Shell

Controllo di flusso negli script: if-then-else

Esercitazione 1 la shell

Introduzione alla programmazione nella shell di Unix 10 Maggio 2005

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Manipolazione di testi: espressioni regolari

Shell: variabili di sistema. Per visualizzare il valore di tutte le variabili d ambiente si usa il comando set

Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME. Per visualizzare il valore di tutte le variabili d ambiente si usa il comando set

Il sistema operativo LINUX Script di Shell

Per visualizzare il valore di tutte le variabili d ambiente si usa il comando env

Lab. di Sistemi Operativi - Esercitazione n 3 - a.a. 2016/2017. Script shell

Keep it simple, stupid!

Lab. di Sistemi Operativi - Esercitazione n 4- a.a Sed e Awk

Page 1. Programmazione. Shell e programmazione. File comandi (script) Introduzione alla programmazione nella shell di Unix

Costrutti condizionali e iterativi

Filtri e pipeline. qualsiasi comando unix ha a disposizione 3 file con cui comunicare con il resto del sistema: standard input in ingresso

Il sistema operativo LINUX Esercitazione 3

Come si accede a BASH Tasti utili: Ctrl-Alt-F1, Ctrl-Alt-F7. Il Primo comando : exit (CASE SENSITIVE!!) Si può uscire con CTRL-D

a strange language, shaped as much by history as by design

Filtraggio di stream di testo

Costrutti condizionali e iterativi

Manipolazione di testo

Lab. di Sistemi Operativi - Esercitazione n 1 - a.a. 2018/2019. Comandi Shell

Esercizi su permessi

Laboratorio di Programmazione (Corso di Laurea in Informatica)

Esecuzione di script

Esempio di domande sul file system

Lab. di Sistemi Operativi - Esercitazione n 2 - a.a. 2012/2013

Lezione 5 in laboratorio processi, stringhe

Sistemi Operativi 1. Mattia Monga. a.a. 2012/13. Dip. di Informatica Università degli Studi di Milano, Italia

Laboratorio di Informatica di Base Progetto Tandem 2007/2008

Lezione 3: Programmazione della Shell di Unix

Lezione 5: Controllo del flusso e costrutti avanzati

Sistemi Operativi, Secondo Modulo, Canale M Z Riassunto della lezione del 03/04/2017

Controllo del flusso. Laboratorio di Sistemi Operativi primavera if/else. if/else

Gestione avanzata dei file

Introduzione a Linux Lezione 7 Programmare in Linux

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Sistemi Operativi, Secondo Modulo, Canale A L Riassunto della lezione dell 11/04/2018

Esercizio sulla gestione di processi in Unix!

Lab. di Sistemi Operativi - Esercitazione n 1 - a.a. 2015/2016. Comandi Shell

GLI SCRIPT DI SHELL. Shell

Gli script di shell. U.Villano, E.Mancini. December 1, U.Villano, E.Mancini () Gli script di shell December 1, / 64

Fondamenti di Informatica L-A. Esercitazione 3

- Controllo di flusso: for -

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 2 10/10/2012 Lezione 3 17/10/2012

Esercizi di programmazione in shell - Gennaio 2004

4. L editor vi da linea comandi

Informatica A (per gestionali) A.A. 2004/2005. Esercizi C. Strutture di controllo

Sistemi Operativi e informatica 1

Laboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while)

Il filesystem di Unix/Linux (I)

Introduzione a Unix/Bash. Insieme minimo di strumenti per interagire con la shell Bash, compilare ed eseguire

Il DOS diagramma di flusso. I comandi del DOS. I comandi: vista funzionale. Parametri. Opzioni. I comandi: sintassi

Ambienti di Programmazione per il Software di Base

INTRODUZIONE ALLA SHELL BASH (PARTE 1) Marica Antonacci INFN BARI

SCUOLA DI INGEGNERIA DELL INFORMAZIONE. Corso di Piattaforme Software per la rete MODULO 2 Anno Accademico Prof. William FORNACIARI

Sviluppare un programma in FORTRAN

Quando usare file di dati

Ulteriori comandi sui file

Shell scripting. Turing completi approccio procedurale non tipati (l'unico tipo disponibile è la stringa) interpretati

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze)

Laboratorio di sistemi operativi A.A. 2010/2011 Gruppo 2 Gennaro Oliva Processi

ESERCITAZIONE 2 fork e exec

Si può scrivere un programma anche utilizzando un editor di testo (Blocco Note, WordPad, ) ricordandosi comunque di salvarlo con l estensione.py.

Il sistema operativo LINUX Esercitazione 3. Esercizio 1. Esercizio 2. Esercizio 5 - Soluzione. Il sistema operativo LINUX Esercitazione 4.

Fondamenti di Informatica T1 Stringhe

Capitolo 1 -- Rosenblatt

Lab. di Sistemi Operativi - Lezione in aula - a.a. 2012/2013

Primi programmi in C

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 2 10/10/2012 Lezione 3 17/10/2012

L ambiente UNIX/Linux. Espressioni regolari e comando find Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Introduzione alle espressioni regolari

Corso di Fondamenti di Informatica

Introduzione al linguaggio C Primi programmi

Raccolta di tutorial Python #1: basi e Tkinter dal sito francescomilanese.com SOMMARIO

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»

BASH: Bourne Again Shell (3)

Linux e la shell Bash

Sistemi Operativi, Secondo Modulo, Canale A L Riassunto della lezione del 09/04/2018

8 Introduzione MATLAB

Introduzione al sistema Linux

Unix - Shell dei comandi Sostituzioni

Diagrammi di flusso - Flowcharts. E un formalismo che consente di rappresentare graficamente gli algoritmi

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Laboratorio di Programmazione(corso A) Laurea in Informatica - A.A. 2000/2001 Docente: A. Lanza

If Statement. Il costrutto condizionale if ha la seguente sintassi:

Dos: script dell interprete dei comandi

Laboratorio di Informatica di Base

Transcript:

Manipolazioni elementari di flussi di testo strutturati L output di molti comandi è costituito da flussi di testo strutturati: ogni riga rappresenta una parte del risultato ed è divisa in campi (fields) ognuno col proprio significato Esempio: PID TTY TIME CMD 4264 pts/5 00:00:00 bash 4707 pts/5 00:00:00 ps Per questo sono disponibili molti strumenti per la manipolazione di flussi di testo Vediamo solo alcuni semplici esempi: tr, cut e l utilizzo di anchor con grep

Sostituzioni di caratteri: tr Il comando tr effettua sostituzioni o eliminazioni di caratteri su un flusso in input inviandone il risultato sullo standard output Uso per sostituzioni: tr setchar1 setchar2 ogni carattere di setchar1 viene sostituito dal carattere corrispondente per posizione all interno di setchar2 I due set devono avere la stessa cardinalità, si estende set2 col suo ultimo char se troppo corto o lo si tronca se troppo lungo Esempi: tr "a-z" "A-Z" converte le minuscole in maiuscole tr "A-Z" "a-z" converte le maiuscole in minuscole tr "123" "ABC" sostituisce 1 con A, 2 con B... tr "0-9" "#" sostituisce qualunque numero con #

Altri usi di tr tr -d setchar1 Elimina tutti i caratteri inclusi nel setchar1 Esempio: tr -d ",.;:!?" per eliminare la punteggiatura tr -s setchar1 Elimina tutte le ripetizioni dei caratteri inclusi nel setchar1 sostituendole con una loro istanza singola Esempio: tr -s " " per eliminare gli spazi ripetuti

Comando cut Il comando cut serve a selezionare una parte di ogni riga di un flusso di testo e a inviarla sullo standard output Le righe si considerano suddivise in fields separati da tab o da altro separatore specificato con l opzione -d L opzione -f serve a specificare quali fields (uno o un range) devono essere riprodotti sullo standard output Esempi: who cut -d" " -f1 visualizza solo i nomi degli utenti attualmente collegati ps tr -s " " cut -d" " -f2 visualizza solo la colonna dei PID correnti

Anchor per ricerca stringhe Nell utilizzo di grep (e anche di altri strumenti) i caratteri ^ e $ sono anchor che specificano la posizione (iniziale o finale) all interno della stringa ^ usato come primo carattere, indica l inizio della stringa: ^From indica tutte le stringhe che iniziano con From $ usato come ultimo carattere, indica la fine della stringa: : Ciao$ indica tutte le stringhe che finiscono con Ciao Esempio: ps tr -s " " grep " bash$" cut -d" " -f2 visualizza solo i PID dei processi corrispondenti al comando bash

Il case case "$variable" in stringa1 ) #stringa1 può essere il valore di una variabile p.e. "$varcaso1" command... ;; stringa2 ) #stringa2 può essere il valore di una variabile p.e. "$varcaso2" command... ;; *) default command ;; esac Esempi articolati su: http://tldp.org/ldp/abs/html/testbranch.html

Esempio di case case $( arch ) in #"arch" returns machine architecture. # Equivalent to 'uname -m'... i386 ) echo "80386-based machine";; i486 ) echo "80486-based machine";; i586 ) echo "Pentium-based machine";; i686 ) echo "Pentium2+-based machine";; * ) echo "Other type of machine";; esac

Altro esempio case "$1" in "E" "e" ) # Esegui qualcosa corrispondente alla lettera e/e ;; "J" "j" ) # Esegui qualcosa corrispondente alla lettera j/j ;; * ) # Tratta il caso di default ;; esac

Ciclo for for variabile in lista do comando1 comando2... done Come solito, il corpo del ciclo viene ripetuto facendo assumere successivamente a variabile tutti i possibili valori presenti in lista do e done sono comandi: devono stare su linee separate

Ciclo for La lista può essere semplicemente specificata come una sequenza di valori separati da spazi (o altri caratteri spaziatori): for nomedocente in Andrea Nicola PietroB PietroM La lista può anche essere ottenuta per filename expansion for file in *.txt La lista può anche essere ottenuta come risultato di un comando for nome in $(cat elenco.txt)... for file in $(find. -name *.tex)... Esiste (ma dovrebbe essere di uso raro) la versione C-style for ((a=1; a <= 10 ; a++))... Equivalente per shell-puristi: for i in $(seq 1 10)

Ciclo sugli argomenti della linea di comando Se non si specifica alcuna lista (omettendo anche la keyword in) in un ciclo for è sottintesa quella degli argomenti passati da linea di comando In alcuni casi può essere necessario eseguire un ciclo solo sugli argomenti da una certa posizione in poi (p.e. se nelle prime posizioni c'e' la specifica di un'opzione) A tale scopo si può usare il comando shift che elimina uno o più argomenti nelle posizioni iniziali dalla linea di comando: in questo modo un eventuale ciclo opera solo sugli argomenti rimanenti Ovviamente shift viene applicato dopo aver opportunamente usato il valore dei primi argomenti (che altrimenti verrebbero persi e ignorati)

Ciclo while while [condition] do command... done Versione C-style per condizione su numero: while (( a <= LIMIT ))... Nei cicli for e while si possono usare i soliti break e continue (se strettamente necessario)

Un loop di inserimento da tastiera while [ "$var1"!= "end" ] do echo "Input variable #1 (end to exit) " read var1 echo "variable #1 = $var1" done Il quoting di $var1 e end non è strettamente necessario in questo caso ma fa parte delle abitudini consigliate Tutti gli spazi indicati tra le quadre sono necessari al buon funzionamento