Operating Systems: Grep/Sed/Awk/Processes Practice Problems (C.d.a Cristian Brad)

# Problem
GREP.1
Folosind utilitarul GREP afisati pe ecran toate liniile dintr-un fisier care
contin un numar de caractere divizibil cu 3.
GREP.2
Folosind utilitarul GREP afisati pe ecran toate linile unui fisier care
contin cel putin 3 vocale mari si nu contin cifre impare.
GREP.3
Folosind utilitarul GREP afisati pe ecran toate linile unui fisier care
incep cu un numar par de cifre impare si se termina cu un numar impar de
cifre pare.
GREP.4
Folosind utilitarul GREP afisati pe ecran toate linile unui fisier care
contin cel mult 3 vocale mari si nu contin cifre impare.
GREP.5
Folosid utilitarul GREP fisati pe ecran toate caraterele care apar intre
prima aparitie a caracterului '|' si ultima aparitie a caracterului '^'
de pe toate linile dintr-un fisier.
GREP.6
Using grep display how many lines from a file contains only big letters.
GREP.7
Using grep display the lines and the line index of thoese lines that start and end with 2
digits.
GREP.8
Using grep display all the characters of each line from a file after the last
aparition of the '$', character includig the '$'.
GREP.9
Using grep display all the lines from a file that don't contain any letter or digit.

SED.1
Folosind SED inlocuiti toate vocalele dintr-un fisier cu upparcase-ul
acestora.
SED.2
Folosind SED stergeti primele 2 si ultimele 3 caractere de pe fiecare
linie dintr-un fisier.
SED.3
Triple all the big letters from a file.
SED.4
Put all groups of digits from a file, that contain at least 2 digits between
curly brakets ( { } ).
SED.5
A file containing at least 2 words separated by space on each line is given.
Delete the 2nd word from each line.
SED.6
Se da un fisier care contine cel putin 2 cuvinte pe fiecare linie separate
prin spatiu. Folosind utilitarul SED intershcimbati primul si ultimul cuvant
de pe fiecare linie.
SED.7
Folosind utilitarul SED interschimbati primul si ultimul caracter de pe
fiecare linie dintr-un un fisier.
SED.8
Folosind utilitarul SED stergeti toate grupurile de caractere dintr-un
fisier formate din cel putin 3 vocale mari.

AWK.1
Se da un fisier care contine doar numere (oricate numere pe linie, fisierul
poate contine oricate lini). Folosind doar utilitarul AWK afisati pe ecran
suma numerelor de pe liniile pare si media aritmetica a numerelor impare.
Indexare liniilor incepe de la 1.
AWK.2
Se da un fisier care contine cuvinte (oricate cuvinte pe orice linie,
fisierul poate contine oricate lini). Folosind utulitarul AWK afisati pe
ecran urmatoarele informati:
- numarul total de cuvinte de pe linile pare
- numarul mediu de cuvinte de pe linile impare
Indexarea linilor se face de la 1
AWK.3
Se da un fisier care contine doar numere (oricate numere pe linie, fisierul
poate contine oricate lini). Folosind utilitarul AWK afisati pe ecran suma
primului si ultimului numar de pe linile care contin un numar par de numere
si media aritmetica a numerelor de pe pozitia din mijloc de pe liniile care
contin un numar impar de numere.
AWK.4
Se da un fisier care contine oricate civinte pe linie. Folosind utlitarul
AWK afisati pe ecran linile care contin cele mai multe si cele mai putine
cuvinte si numarul mediu de cuvinte per linie din fisier.
AWK.5
Folosind utilitarul AWK afisti pe ecran numarul mediu de cuvinte per linie dintr-un fisier,
si cuvintele a caror frecventa este mai mica decat media respectiva.
AWK.6
Folosind AWK afistai pe eran toate field-urile situate la mijlocul
linilor care contin un numar impar de fielduri dintr-un fisier, dupa care
afisati pe o singura linie numarul (index-ul) linilor care contin mai mult de 2
fielduri.
AWK.7
Folosind AWK Afisati vectorul de frecventa a unui fisier.
AWK.8
Se sa un fisier cu urmatorul format: Nume Prenume nota1 nota2 nota 3.
Folosind AWK afisati pe ecran urmatoarele informatii: Nume Prenume Medie,
pe aceeasi linie unde media este media aritmetica a celor 3 note, dupa care afisati unmele si
prenumele celor care au media mai mare decat 8

ex:
input:
nume1 prenume1 8 9 7
nume2 prenume2 8 2 4
nume3 prenume3 10 10 9

output
nume1 prenume1 8
nume2 prenume2 4.66667
nume3 prenume3 9.66667
nume3 prenume3
AWK.9
A file containing a random number of words is given. For each line, if the
line contains an odd number of words diplay the number of words, otherwise
diplay the first and last word from that line.
AWK.10
A file containing at least 5 words per line is given. Knowing that the first
word and the last 2 words from each line are numbets, for each line display
the sum of those 3 numbers, and then display the average of the first numbers
from all the line.

ex:
input:
1 a a 3 3
3 b b 4 5 5
5 c c 8 7 9 9
output:
7
13
23
3

PROC.1
Scrieti 2 programe c, A si B. Programul A va citi de la tastatura un nume de
fisier. Programul A va citi din fisier si va scrie in fifo toate cifrele din
fisier.
Probramul B va creea 2 procese P1 si P2. P1 va citi cifrele din fifo-ul
mentionat anterior si va calcula suma acestora, pe care o va trimite prin
pipe catre P2, care va afisa pe ecran divizorii numarului acestuia.
Numele fifo-ului va fi dat ca argument in linia de comanda in ambele
programe. Programul A va creea fifo-ul si programul B va sterge fifo-ul.
Ambele programe terbuie compilate cu gcc -Wall -g fara erori sau warninguri.
Ambele programe trebuie sa ruleze fara memory leaks, erori de context sau
procese zombie.
PROC.2
Scrieti 2 programe c, A si B. Programul A va citi doua numare intregi
de la tastatura si va scrie intr-un fifo cel mai mic multiplu comun al
acestora. Programul B va creea 2 procese P1 si P2, P1 va citi multiplul
din fifo-ul mentionat anterior si va calcula divizorii acestuia.
Divizorii vor fi transmis printr-un pipe procesului P2 care ii va afisa
pe ecran.
Numele fifo-ului va fi dat ca argument in linia de comanda in ambele
programe. Programul A va creea fifo-ul si programul B va sterge fifo-ul.
Ambele programe terbuie compilate cu gcc -Wall -g fara erori sau warninguri.
Ambele programe trebuie sa ruleze fara memory leaks, erori de context sau
procese zombie.
PROC.3
Write 2 c programs, A and B. A will create 2 prcesses p1 and p2. p1 will
have provided (by any means (necessary)) a file containing only numbers (as
many as you like) then it will read from the standard input (keyboard)
a number (n). p1 will send the first n numbers from the file to p2 via pipe.
p2 will send the sum of al the odd numbers received to B, via fifo.
B will display on the standard output (the console) the number received.
The source file must be compiled using gcc with -Wall -g options WITHOUT WARNINGS OR SYNTAX ERRORS!!!
Memory leacks and zombie processes are not allowed.
PROC.4
Write 2 c programs, A and B. A will create 2 prcesses p1 and p2. p1 will
have provided (by any means (necessary)) a file containing random text
then it will read from the standard input (keyboard) a number (n).
p1 will send the nth character from the file to p2 via pipe.
p2 will write on the standard output (the console) the nature of that
character (letter, digit, other) and will send it to B via fifo.
B will display on the standard output the ascii code of that character.
The source file must be compiled using gcc with -Wall -g options WITHOUT WARNINGS OR SYNTAX ERRORS!!!
Memory leacks and zombie processes are not allowed.
PROC.5
Scrieti 2 programe c, A si B. Programul A va citi un numar intreg de la
tastatura si va scrie intr-un fifo toti divizorii numarului citit. Programul
B va crea 2 procese P1 si P2, P1 va citi divizorii din fifo-ul mentionat
anterior si va calcula suma lor. Suma respectiva va fi transmis printr-un
pipe procesului P2 care o va afisa pe ecran.
Numele fifo-ului va fi dat ca argument in linia de comanda in ambele
programe. Programul A va creea fifo-ul si programul B va sterge fifo-ul.
Ambele programe terbuie compilate cu gcc -Wall -g fara erori sau warninguri.
Ambele programe trebuie sa ruleze fara memory leaks, erori de context sau
procese zombie.
PROC.6
Write 2 c programs, A and B. A will create 2 prcesses p1 and p2. p1 will
read from the standard input (keyboard) the path to a file f, f can have any number of characters any number of times.
p1 will send to p2, via pipe, the path.
p2 will send to B, via fifo, 5 numbers, each representing the frequency of a large
vowel (A,E,I,O,U) found in the file. B will display the numbers on the
standard output (the console).
The source file must be compiled using gcc with -Wall -g options WITHOUT WARNINGS OR SYNTAX ERRORS!!!
Memory leacks and zombie processes are not allowed.