Eliminare comentarii pentru sursa program in C/C++ (folosind sed)

Aici se discută despre toate distribuțiile de Linux / *nix.

Eliminare comentarii pentru sursa program in C/C++ (folosind sed)

Postby Zatarra » 07 Jun 2011, 01:03

Avem sursa source.c

  1. /*Program simplu:
  2. Fiecare baiat din lume are 3 mere
  3. Fiecare fata din lume are 5 mere
  4. Sa se creeze un program care afla numarul de mere dintr-o camera
  5. cu un numar de baieti si de fete introdus de la tastatura*/
  6.  
  7. #include <stdio.h>
  8.  
  9. int NumarBaieti;
  10. int NumarFete;
  11. int NumarMere;
  12.  
  13. void main (void)
  14. {
  15.     printf("\nIntrodu numarul de baieti din camera");
  16.     scanf("%d",&NumarBaieti); //Citim numarul de baieti
  17.     printf("\nIntrodu numarul de fete din camera");
  18.     scanf("%d",&NumarFete); //Citim numarul de fete
  19.     NumarMere=NumarBaieti*3+NumarFete*5;
  20.     //Calculam numarul de mere
  21.     printf("In camera sunt %d mere",NumarMere);
  22. }
  23.  



Pentru a elimina comentariile de genul:

  1. /*Program simplu:
  2. Fiecare baiat din lume are 3 mere
  3. Fiecare fata din lume are 5 mere
  4. Sa se creeze un program care afla numarul de mere dintr-o camera
  5. cu un numar de baieti si de fete introdus de la tastatura*/


Folosim urmatoarea comanda:

cat source.c |sed '/\/\*/,/\*\//d' > newsource.c

Noua sursa newsource.c va arata astfel:

  1. #include <stdio.h>
  2.  
  3. int NumarBaieti;
  4. int NumarFete;
  5. int NumarMere;
  6.  
  7. void main (void)
  8. {
  9.         printf("\nIntrodu numarul de baieti din camera");
  10.         scanf("%d",&NumarBaieti); //Citim numarul de baieti
  11.         printf("\nIntrodu numarul de fete din camera");
  12.         scanf("%d",&NumarFete); //Citim numarul de fete
  13.         NumarMere=NumarBaieti*3+NumarFete*5;
  14.         //Calculam numarul de mere
  15.         printf("In camera sunt %d mere",NumarMere);
  16. }


Pentru a elimina comentariile de genul:

  1. scanf("%d",&NumarBaieti); //Citim numarul de baieti

sau
  1.        //Calculam numarul de mere


Folosim urmatoarea comanda:

cat source.c |sed -e 's/\/\/.*$//g' > newsource.c

Noua sursa newsource.c va arata astfel:

  1. /*Program simplu:
  2. Fiecare baiat din lume are 3 mere
  3. Fiecare fata din lume are 5 mere
  4. Sa se creeze un program care afla numarul de mere dintr-o camera
  5. cu un numar de baieti si de fete introdus de la tastatura*/
  6.  
  7. #include <stdio.h>
  8.  
  9. int NumarBaieti;
  10. int NumarFete;
  11. int NumarMere;
  12.  
  13. void main (void)
  14. {
  15.         printf("\nIntrodu numarul de baieti din camera");
  16.         scanf("%d",&NumarBaieti);
  17.         printf("\nIntrodu numarul de fete din camera");
  18.         scanf("%d",&NumarFete);
  19.         NumarMere=NumarBaieti*3+NumarFete*5;
  20.  
  21.         printf("In camera sunt %d mere",NumarMere);
  22. }


Pentru a elimina liniile goale folosim una din urmatoarele comenzi:

cat source.c |sed '/^$/d' > newsource.c
cat source.c |sed '/./!d' > newsource.c

Noua sursa newsource.c va arata astfel:

  1. /*Program simplu:
  2. Fiecare baiat din lume are 3 mere
  3. Fiecare fata din lume are 5 mere
  4. Sa se creeze un program care afla numarul de mere dintr-o camera
  5. cu un numar de baieti si de fete introdus de la tastatura*/
  6. #include <stdio.h>
  7. int NumarBaieti;
  8. int NumarFete;
  9. int NumarMere;
  10. void main (void)
  11. {
  12.         printf("\nIntrodu numarul de baieti din camera");
  13.         scanf("%d",&NumarBaieti); //Citim numarul de baieti
  14.         printf("\nIntrodu numarul de fete din camera");
  15.         scanf("%d",&NumarFete); //Citim numarul de fete
  16.         NumarMere=NumarBaieti*3+NumarFete*5;
  17.         //Calculam numarul de mere
  18.         printf("In camera sunt %d mere",NumarMere);
  19. }


Pentru a elimina liniile care contin doar tab-uri sau spatii folosim urmoatoarele comenzi:

Pentru tab-uri: cat source.c |sed '/^\t\{1,\}$/d' > newsource.c
Pentru space-uri: cat source.c |sed '/^\s\{1,\}$/d' > newsource.c

Pentru a aplica toate cele prezentate folosim urmatoarea comanda:

cat source.c |sed '/\/\*/,/\*\//d' |sed -e 's/\/\/.*$//g' |sed '/^$/d' |sed '/^\s\{1,\}$/d' |sed '/^\t\{1,\}$/d' > newsource.c

Noua sursa newsource.c va arata astfel:

  1. #include <stdio.h>
  2. int NumarBaieti;
  3. int NumarFete;
  4. int NumarMere;
  5. void main (void)
  6. {
  7.         printf("\nIntrodu numarul de baieti din camera");
  8.         scanf("%d",&NumarBaieti);
  9.         printf("\nIntrodu numarul de fete din camera");
  10.         scanf("%d",&NumarFete);
  11.         NumarMere=NumarBaieti*3+NumarFete*5;
  12.         printf("In camera sunt %d mere",NumarMere);
  13. }


Daca aveti ceva sugestii sau eventuale intrebari nu ezitati sa postati
3.5p / 2 votes
ReSpEcT
User avatar
Zatarra
Byte
 
Joined: 01 Jan 2010
Location: /etc/sudoers
Status: 12.5

Return to Linux

Who is online

Users browsing this forum: No registered users and 0 guests

cron