Rechercher et afficher une chaîne de caractère variable

Résolu
primoOrion Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
primoOrion Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

j'aimerais créer un script shell qui me permettrait d'aller chercher une chaîne de caractère donné (constante) et d'afficher un caractère (ou un nombre) situé à une "distance" constante de la chaîne donnée en entré.

Voilà a quoi ressemble le fichier texte dans lequel j'aimerai effectué ma recherche:

Population analysis by basis function type

Unique atom s p d f g Total Charge
4 O 3.93093 5.12801 0.02745 0.00230 0.00000 9.08869 - 1.08869
5 H 0.74283 0.15635 0.01203 0.00000 0.00000 0.91121 + 0.08879
6 RB 2.95785 6.01587 0.02277 0.00362 0.00000 9.00011 - 0.00011

J'aimerais pouvoir recherché la chaîne de caractères "Population analysis by basis function type" qui est la même pour tout mes fichiers et afficher les trois nombres de la dernière collonne (charge), c'est à dire: - 1.08869, + 0.08879 et - 0.00011. Ces nombres variant d'un fichier à l'autre.

Il me faudrait donc probablement utiliser les commandes grep, sed et awk. J'ai fait pas mal de recherche mais n'ai pas trouvé ce qu'il me faut ...

Je précise que je suis débutant pour tout ce qui est système Linux et je possède des notions au language de programmation (C++).

Merci d'avance pour votre aide !

A voir également:

4 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 636
 
hello
$ awk '/Population/ {for(n=1; n<6; n++){getline; if(n>2)print $(NF-1), $NF}} ' fichier
- 1.08869
+ 0.08879
- 0.00011
2
primoOrion Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Salut et un grand merci pour ta réponse :)
Pourrais tu m'expliquer en quoi consiste les deux dernières options $(NF-1), $NF ?
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 636
 
puisqu'il y a un espace entre le signe et le nombre, il faut afficher l'avant-dernier champ $(NF-1) et le dernier champ $NF
autre méthode avec grep
$ grep -A 5 Population fichier | grep -o '. [0-9\.]*$'
- 1.08869
+ 0.08879
- 0.00011
0
primoOrion Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
D'accord :)
Un tout grand merci !
0