Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

Esame 2016 scritto con Soluzioni - Sistemi Operativi

Esame

  • Effettua l'accesso per rispondere
Questa discussione ha avuto 5 risposta/e

#1
exSnake

exSnake

    Member

  • Utente
  • StellaStella
  • 16 Messaggi:
 
Espressioni Regex

1. Verifica indirizzo ip
	/(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/
	https://regex101.com/r/mV1mH2/1

2. Codice Fiscale in regex con verifica giorno del mese (senza verifica anno bisestile) con omocodia ristretta alle ultime 3 cifre (le prime che vengono modificate in caso di omocodia)
	/([A-Z]{6})([0-9]{2})(([DHPS](0[1-9]|1[0-9]|2[0-9]|30|4[1-9]|5[0-9]|6[0-9]|70))|([ACELMRT](0[1-9]|1[0-9]|2[0-9]|30|31|4[1-9]|5[0-9]|6[0-9]|70|71))|(B(0[1-9]|1[0-9]|2[1-9]|4[1-9]|5[0-9]|6[1-9])))[A-Z]{1}[0-9]{3}[A-Z]/
		https://regex101.com/r/nS7hD8/1
	versione con omocodia che non verifica pero l'anno bisestile e ne se le lettere da destra sono state sostituite
		/([A-Z]{6})([0-9LMNPQRSTUV]{2})(([DHPS](0[1-9]|1[0-9]|2[0-9]|30|4[1-9]|5[0-9]|6[0-9]|70|[0-3]{1}[LMNPQRSTUV]{1}|[LMNPQRSTUV]{2}))|([ACELMRT](0[1-9]|1[0-9]|2[0-9]|30|31|4[1-9]|5[0-9]|6[0-9]|70|71|[0-3]{1}[LMNPQRSTUV]{1}|[LMNPQRSTUV]{2}))|(B(0[1-9]|1[0-9]|2[1-9]|4[1-9]|5[0-9]|6[1-9]|[0-2]{1}[LMNPQRSTUV]{1}|[LMNPQRSTUV]{2})))[A-Z]{1}[0-9LMNPQRSTUV]{3}[A-Z]/

3. Giorno_della_settimana GG/MM/AAAA.
	/(((lun|mart|mercol|giov)(edi|edì|edi'))|(Venerd(i|ì|i')|Sabato|Domenica)) (0[1-9]|1[0-9]|2[0-9]|30|31)\/(0[1-9]|1[0-2])\/(19[0-9]{2}|2[0-9]{3})/i
	https://regex101.com/r/cA5uE0/1

4. Espressione regolare che denote costanti reali in linguaggio di programmazione, prevedendo anche la notazione esponenziale.
	/(^(\.\d+($| [eE][-\+]\d+))|^[-\+]?\d+\.\d+($| [eE][-\+]\d+))/
	https://regex101.com/r/hM7rN2/1

5. Verifica che la stringa inserita sia composta tra 8 e 10 caratteri e contenga ognuno dei seguenti: Lettera maiuscola, minuscola, numero e carattere speciale
	/((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!"#$%&'()*+,-.:;<=>?@[\]^_`{|}~]).*).{8,10}/
	https://regex101.com/r/iY0bQ4/1

6. Verifica di un URL
	/^(https?):\/\/(((www.)?([^\s].*)\.[a-z]{2,5})|((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))(\/?(\S+)?|\:)/
	https://regex101.com/r/qK2gT0/1
 
Comando Sed

	
#1. Sostituisce gli spazi con underscore
	sed -e 's/ /_/g' "fileVecchio.txt" > "fileNuovo.txt"

#2. Cancella tutti le righe relative ai commenti e le righe vuote in un file
	#2.1 Sostituisce commenti del tipo // con righe vuote
		sed 's/\/\/.*//g'
	#2.2 Converte tab e spazi presenti in righe vuote, in righe vuote
		sed -e 's/^\s*$//g'
	#2.3 Cancella commenti del tipo /* */
		sed -e '/\/\*[^*]*\*\// d'
	#2.4 Cancella Righe vuote
		sed -e '/^\s*$/d'
	#2.5 COMANDO FINALE
		sed -e 's/\/\/.*//g' -e 's/^\s*$//g' -e '/\/\*[^*]*\*\// d' -e '/^\s*$/d' "file1" > "file2"
	#ECHO PER TESTARE:
		echo -e "la riga successiva ha commento\n//Ciao\nquesta non presenta commenti, ora inseriamo una riga con commenti del tipo slash asterisco\n/* test */"
		
#3. Sostituisce i punti alla all\'interno di una riga con le virgole, tranne quello alla fine della riga.
	#2.1 Sostituiamo temporaneamente il punto a fine riga con una virgola
		sed -e 's/\.$/,/g'
	#2.2 Sostituiamo i punti restanti con le virgole
		sed -e '/\./,/g'
	#2.3 Sostituiamo nuovamente la virgola a fine riga col punto
		sed -e '/,$/\./g'
	#2.4 COMANDO FINALE
		sed -e '/\.$/,/g' -e '/\./,/g' -e '/,$/\./g'
	#Ci sarebbe un altro modo
		sed -E '/\.(.)/,\1/g'
		#ma non funziona con i puntini sospensivi


#4. Sostituisce le abbreviazioni presenti in un sms: sostituire 6 con sei, x con per, cmq con comunque, xké con perché
	sed -e 's/6/sei/g' -e 's/[xX][^a-z]/per /g' -e 's/[Cc]mq/comunque/g' -e 's/[Xx]k[ée]/perché/g'

#5. Estrae le email da un file contenente email e testo
	sed -E 's/(\S+@\S+)|./\1/g' "filemail.txt" > "filemailnew.txt"
	#NON COMPATIBILE CON re_format(7), SOSTITUIRE \S+ con [^[:space:]]

#6. Cambia una linea che inizia con =, catenandola alla precedente e aggiungendo ==
	sed -e ':loop' -e 'N' -e '$!bloop' -e 's/\n=/==/g' f.txt > f2.txt
 
Comando Grep

#1. Dato un file .c, contare le linee che contengono un if
	grep -e 'if' file.c | wc -l

#2. Scrivere un comando grep che mostri le informazioni di un processo dato il pid sarebbe piu semplice usare
		ps -f -p $pid
	#pero si possono ottenre piu info, tra le quali ppid del pid con (se il pid fosse 5656)
		ps -ef | grep '[5]656'
	#il 5 con le parentesi serve a non far uscire nel grep anche il grep stesso

#3. Scrivere un comando grep che dato un file, stampi tutte le linee che non iniziano con un numero
	grep -e '^[^0-9]' file.txt
	
#4. Scrivere un comando grep che visualizzi solo i file creati nel mese di Maggio e salvare l’elenco su un file
	ls -l | grep ' May ' > output.txt
	
#5. Stampare tutte le linee di un file che contengono un numero pari, seguito da un numero dispari e seguiti dallo stesso numero pari (e.g., 232, 454, 818)
	grep -E '([02468])[13579]\1([^0-9]|$)' file.txt

 
Comando Find


#1. Cercare tutti i file creati nel mese di maggio e creare un file che contiene il dettagli degli attributi
	$month = "May-2016"
	ls -ld `find . -newermt "01-$month -1 sec" -and -not -newermt "01-$month +1 month -1 sec"` > testo.txt

#2. Cercare tutti i file che hanno estensione .txt, iniziano per vocale, hanno un numero nel nome, e salvarli in un file
	find ../.. -iname '[aeiou]*[0-9]*.txt'  -print > find2.txt
	
#3. Cercare i file che hanno estensione .doc e dimensioni superiori a 100KB e spostarli in una directory "./cento"
	find ../.. -iname "*.doc" -size +100 -type f -exec /bin/mv {} $directory \
	es: find ../.. -iname "*.doc" -size +102400c -type f -exec /bin/mv {} /home/os/Desktop/Esame/Cento \

#4. Cercare i file che non hanno i permessi di scrittura per gli altri utenti e contarli
	find $directory ! -perm 0002 | wc -l
	find $directory ! -perm o=w | wc -l

#5. Contare i file creati ieri con estensione .c appartenenti all’utente root
	find . -mtime +1 -prune -o -mtime +0 -iname "*.c" -user root -print

#6. Cercare i file con estensione .doc presenti nella home e nella var con dimensione compresa tra 10kb e 1mb e spostarli nella cartella /home/mydocs chiedendo la conferma dell\'utente
	mkdir /home/mydocs
	sudo su #otteniamo i permessi di super user per poter accedere alla cartella home/mydocs
	find /home/ /var/ -iname "*.doc" -size +10240c -a -size -1024000c -type f | xargs mv -i -t /home/mydocs
	#Questa volta usiamo xargs per muovere i file con l'opzione --interactive in caso di file con lo stesso nome


 
Comando awk


#1. Dato un file formattato in csv (comma separed value), che contiene 4 colonne, stampare solo la prima e la quarta.
	awk -F "," '{print $1  "\t" $4}' csv.txt 
	#separato da un tab

#2. Come l’esercizio di sopra ma passando ad awk un file con i comandi
		awk -f script.awk csv.txt
	#Ed il file e il seguente:
		BEGIN { FS = "," } ; { print $1 "\t" $4  }

#3. Stampare solo la prima e la quarta colonna delle righe che rispettano un dato pattern
	awk '/pattern/ {print $1 "\t" $4}'
	
#4. Come l’esercizio 3, l’utente può scegliere il pattern passandolo come variabile
	awk -v pat="pattern" '$0 ~ pat { print $1 $4 }' 

#5. Come 1, ma stampando le colonne invertite (prima la quarta e poi la prima)
	awk -F "," '{print $4  "\t" $1}' csv.txt 

#6. Contare le righe con più di n caratteri, es: 50 caratteri
	awk '{if(length($0)>50)count++;} END {print count}' csv.txt

  • Questo post piace a willwaush, Michele Grimaldi e francxxx


Immagine inviata

#2
willwaush

willwaush

    Newbie

  • Utente
  • Stella
  • 4 Messaggi:

Date una medaglia a quest'uomo



#3
Skynet

Skynet

    Newbie

  • Utente
  • Stella
  • 2 Messaggi:

Al 5° esercizio di sed, perchè ci sta quella |. ?



#4
exSnake

exSnake

    Member

  • Utente
  • StellaStella
  • 16 Messaggi:

Al 5° esercizio di sed, perchè ci sta quella |. ?

 

 

Se non ricordo male consentiva di eliminare tutto il resto del testo estraendo solo il primo gruppo.

 

Prova file che hanno una struttura del tipo

 

testo mail@mail.com testo

mail@mail.com testo

testo mail@mail.com

 

mail@mail.com

 

prova con e senza, mi ricordo di aver avuto dei problemi in un caso del genere, ma non ricordo di preciso cosa accadeva, quindi misi quel "or" "|."


  • A Skynet piace questo post
Immagine inviata

#5
Skynet

Skynet

    Newbie

  • Utente
  • Stella
  • 2 Messaggi:

Se non ricordo male consentiva di eliminare tutto il resto del testo estraendo solo il primo gruppo.

 

Prova file che hanno una struttura del tipo

 

testo mail@mail.com testo

mail@mail.com testo

testo mail@mail.com

 

mail@mail.com

 

prova con e senza, mi ricordo di aver avuto dei problemi in un caso del genere, ma non ricordo di preciso cosa accadeva, quindi misi quel "or" "|."

Ancora non mi è chiaro... 



#6
exSnake

exSnake

    Member

  • Utente
  • StellaStella
  • 16 Messaggi:

Ancora non mi è chiaro... 

Cosa non ti e chiaro? Hai provato quello che ti ho detto? Che risultato ti ha dato?

 

|. significa "oppure qualsiasi carattere" \1 significa estrai il primo gruppo (quello tra parentesi tonde)

 

Edit: Ok so entrato con unix, ecco a cosa serve quel |.

in pratica io gli sto dicendo di matchare tutto quello che e' del tipo: testo@testo, e di sostituirlo (sed serve a questo), ovviamente se sostituisco tutto con se stesso, non mi cambia niente nel file, inserendo |, vado si a sostituire quel pattern, ma inoltre, gli dico che qualsiasi altro carattere che non sia quel pattern, va aggiunto al pattern e quello che dovrà riscrivere sara solo il pattern stesso "\1"

 

"ciao sono il testo presente e questa e la mail test@mail.com"

 

sed prendi test@mail.com, oppure qualsiasi altro carattere, sostituisci tutto con il primo grab che hai fatto, risultato -> 

 

sed(ciao sono il testo presente e questa e la mail test@mail.com) -> valore di ritorno -> test@mail.com -> riga finale -> test@mail.com 

 

se non avessi messo |.

 

sed prendi test@mail.com, sostituiscilo col primo grab che hai fatto, risultato ->

 

sed(ciao sono il testo presente e questa e la mail test@mail.com) -> valore di ritorno - > test@mail.com -> riga finale -| ciao sono il testo presente e questa e la mail test@mail.com

 

Sed e' assimilabile a un trova e sostituisci del notepad di windows, se gli dici di trovare la mail e sostituirla con la mail, tutto il resto resta invariato, se invece gli dici di trovare la mail, oppure qualsiasi altro carattere e sostituirlo con la mail, gli altri caratteri vengono eliminati, e il valore di ritorno rimesso all'interno sara la mail trovata.


  • A francxxx piace questo post
Immagine inviata





Contrassegnato con uno o più di queste parole chiave: Esame

Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi