Esercizio 1. eseguire: > ps -el > output_ps.txt 1. da shell eseguire: > awk '$4 == 1 {print $NF}' output_ps.txt 2. (($2=="R") || ($2=="R+")){ printf("%s %s\n", $4, $14); } 3. (($2=="R") || ($2=="R+")){ vet[$14] = $4 count_elem++; } END{ for(i=count_elem; i>0; i--){ max = 0; for(j in vet){ if(!(vet[j] in checked)){ if(vet[j] > max){ max = vet[j]; max_elem = j; } } } max_vet[i] = max; checked[max] = max_elem; } for(i=count_elem; i>0; i--){ printf("%s %s\n", max_vet[i], checked[max_vet[i]]); } } 4. (($2=="R") || ($2=="R+")){ print $4 " " $NF >> "temp4" } END { system ("sort -r -k 1 -n temp4") system ("rm -f temp4") } (oppure) awk '$2 ~ /R\+{0,1}$/ {print $4 " " $NF}' output_ps.txt | sort -r -k 1 -n Esercizio 2. awk -v file="backup_config.txt" script="backup_script.sh" BEGIN{ pos=0; neg=0; printf("#!/bin/bash\n\n") > script while((getline < file)){ segno[$1]=$2; } } $1 == "#" { backup_dir=$2; } $0 ~ /^[^:]*:.*/ { split($0,v,":"); nome_file=v[1]; backup_file=v[2]; if(nome_file in segno){ if(segno[nome_file]=="+"){ print "# adding file " nome_file " to archive " backup_dir"/"backup_file >> script print "if [ -e " backup_dir"/"backup_file " ]" >> script print "then" >> script print "\ttar --append -f " backup_dir"/"backup_file " " nome_file >> script print "else" >> script print "\ttar -cvf " backup_dir"/"backup_file " " nome_file >> script print "fi" >> script print "" >> script } else{ print "# removing file " nome_file " to archive " backup_dir"/"backup_file >> script print "if [ -e " backup_dir"/"backup_file " ]" >> script print "then" >> script print "\ttar --delete -f " backup_dir"/"backup_file " " nome_file >> script print "fi" >> script print "" >> script } } } END { for(chiave in segno){ if(segno[chiave]=="+") pos++; else neg++; } printf("Numero file aggiunti %d\n", pos); printf("Numero file rimossi %d\n", neg); }