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

Résolu/Fermé
primoOrion Messages postés 3 Date d'inscription vendredi 28 novembre 2014 Statut Membre Dernière intervention 30 novembre 2014 - 28 nov. 2014 à 15:33
primoOrion Messages postés 3 Date d'inscription vendredi 28 novembre 2014 Statut Membre Dernière intervention 30 novembre 2014 - 30 nov. 2014 à 14:54
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
28 nov. 2014 à 16:30
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 vendredi 28 novembre 2014 Statut Membre Dernière intervention 30 novembre 2014
29 nov. 2014 à 18:03
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 nov. 2014 à 10:22
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 vendredi 28 novembre 2014 Statut Membre Dernière intervention 30 novembre 2014
30 nov. 2014 à 14:54
D'accord :)
Un tout grand merci !
0