[shell sous linux] besoin d'aide ...

besoin d'aide ... [shell sous linux] - Shell/Batch - Programmation

Marsh Posté le 24-03-2004 à 16:22:36    

Voila je débute en script (shell) et je voulais savoir comment a partir d'un script on affiche une ligne precise d'un fichier.
 
En fait je chercherai l'equivalent de head -n 1 fichier.txt pour afficher une ligne choisie au lieu de la premiere ligne  
 
merci d'avance


Message édité par patastronch le 24-03-2004 à 18:30:04
Reply

Marsh Posté le 24-03-2004 à 16:22:36   

Reply

Marsh Posté le 24-03-2004 à 16:25:05    

patastronch a écrit :


 
Sujet : question d un debutant surement deja posée
 
Voila je débute en script et je voulais savoir comment a partir d'un script on affiche une ligne precise d'un fichier.
 
En fait je chercherai l'equivalent de head -n 1 fichier.txt pour afficher une ligne choisie au lieu de la premiere ligne  
 
merci d'avance


Alors pourquoi tu n'utilises pas la fonction recherche du forum ?

Reply

Marsh Posté le 24-03-2004 à 16:27:28    

entre nous je sais pas si on peut le faire

Reply

Marsh Posté le 24-03-2004 à 16:29:22    

j ai cherché mais y a telment de post que j ai abandonné ...
 
On peut pas le faire ??? arf ...

Reply

Marsh Posté le 24-03-2004 à 17:49:59    

Si tu veux afficher une seule ligne, la 12 par exemple :
 
sed -n '12p' fichier
awk 'NR==12' fichier
 
Pour afficher un fichier à partir d'une ligne, la 12 par exemple :
 
tail +12 fichier
sed -n '12,$p' fichier
awk 'NR>=12' fichier


---------------
Jean Pierre.
Reply

Marsh Posté le 24-03-2004 à 18:08:26    

merci beaucoup  
C est quoi exactement sed ? et awk ?
 
Et pour finir une derniere question:
Je recolte on va dire la phrase "voici le texte1" dans un fichier.
et maintenant chaque mot je voudrais l'identifier par exemple texte1 savoir le differentier de texte2 ou 3 . est il possible de recuperer un character precis dans un mot ?

Reply

Marsh Posté le 24-03-2004 à 18:14:07    

pas sous nux. merci [:dawa]


Message édité par jagstang le 24-03-2004 à 18:14:25
Reply

Marsh Posté le 24-03-2004 à 18:18:55    

ah ?? zut , en fait mon probleme c est : j ai plusieurs mot qui commence par A suivit d une valeur comme A1 ou A7 ou A89 melangé a dautres mots qui peuvent etre collé par exemple: voiA2A4vjA6 et je voudrais recuperer les A# separement ...
Quelqu un aurait une idée ?
 
sachant que je pourais tres bien avoir AZEA2ASE et il me faut recuperer que A2 dans ce mot.
merci d'avance


Message édité par patastronch le 24-03-2004 à 18:20:49
Reply

Marsh Posté le 24-03-2004 à 18:20:31    

dos me semble léger dans ce cas. peut-être en python ou en C

Reply

Marsh Posté le 24-03-2004 à 18:22:29    

euh c est pas du dos mais du shell sous linux (enfin ca doit se ressembler je pense)

Reply

Marsh Posté le 24-03-2004 à 18:22:29   

Reply

Marsh Posté le 24-03-2004 à 18:25:24    

pardon j'avais mal compris.

Reply

Marsh Posté le 24-03-2004 à 18:25:49    

tu dois pouvoir y arriver dans ce cas. commence par changer le titre du topic

Reply

Marsh Posté le 24-03-2004 à 18:26:34    

Ou sinon alors comment peut on appeler un programme en c a partir d'un script? par exemple mon script prendrait des arguments puis appelerait un programme c avec les arguments donné au script
mais je prefererais que ce soit que du shell si c est possible ...


Message édité par patastronch le 24-03-2004 à 18:27:44
Reply

Marsh Posté le 24-03-2004 à 19:35:47    

awk fait parti des commandes que l'on se doit de connaître si l'on veut écrire des scripts un tant soit peu évolués (au même titre que sed ou cut)
 
La commande suivante affiche tous les mots trouvés dans le fichier.
 

awk '
{
   while (match($0,/A[0-9]+/) >0) {
      print substr($0, RSTART, RLENGTH);
      $0 = substr($0,RSTART+1);
   }
' fichier


Message édité par aigles le 24-03-2004 à 19:37:39

---------------
Jean Pierre.
Reply

Marsh Posté le 24-03-2004 à 19:46:55    

sincerement un grand merci, me reste pus qu a comprendre pourquoi ca marche =)
(il manque juste une petite incollade =)  )
 
D aileur si t as un site (en francais ...) qui explique bien les commande que tu utilises je suis preneur =)  
encore merci !!!

Reply

Marsh Posté le 24-03-2004 à 20:01:16    

Il existe une commande qui permet de determiner le type d'un variable ?
par exemple pour savoir si $2 est un entier ?


Message édité par patastronch le 24-03-2004 à 20:27:22
Reply

Marsh Posté le 24-03-2004 à 22:54:26    

if expr "$2" : '[0-9]\+$' > /dev/null
then
   echo Numeric
fi
 


---------------
Jean Pierre.
Reply

Marsh Posté le 25-03-2004 à 02:21:00    

Sinon pour avoir la ligne N tu peux toujours faire head -n N | tail -n 1.

Reply

Marsh Posté le 25-03-2004 à 10:45:12    

En voyant la solution tail/head qui fonctionne trés bien, je me suis dit qu'en terme de perf ce n'est pas trés optimisé, les N lignes sont lues 2 fois.
Du coup j'ai repris les deux commandes que j'avais indiqué car elles aussi ne sont pas optimisées. Dans les deux cas, une fois la ligne trouvée et affichée on continu à lire le fichier d'entrée, ce qui n'est pas top.
 
Voici donc les nouvelles versions des commandes :
 
sed -n '12{;p;s;}' fichier
awk 'NR==2 {print;exit}' fichier
 
 
 
@patastronch
Ne cumule pas les questions dans un même sujet (affichae ligne, récup mots, test numéricité), ouvre un nouveau sujet par question.


---------------
Jean Pierre.
Reply

Marsh Posté le 25-03-2004 à 10:57:46    

aigles a écrit :

@patastronch
Ne cumule pas les questions dans un même sujet (affichae ligne, récup mots, test numéricité), ouvre un nouveau sujet par question.


Non, tant que ça a un rapport avec la question initiale...
http://forum.hardware.fr/forum2.ph [...] 544&cat=10

Citation :

[08] Si vous avez une autre question qui a un rapport étroit avec la première, et que les personnes qui vous ont répondu la premère fois sont susceptibles d'y répondre, posez la question dans le même topic, en modifiant éventuellement le titre si cela vous paraît approprié. Cela permet de ne pas devoir réexpliquer tout le contexte ou évite que les participants posent des questions répondues précédemment.

Reply

Marsh Posté le 25-03-2004 à 14:24:20    

Les trois questions n'ont pas de rapport entre elles si ce n'est que c'est de la programmation shell.
 
Si l'on considère qu'elles ont toutes un rapport étroit ou un contexte commun, alors patastronch peut poser toutes les questions qu'il veut dans se sujet et ce jusqu'à qu'il maîtrise suffisamment le shell pour pouvoir se passer de ce forum.
 
C'est une idée à creuser ça, un sujet par auteur et non par question...


---------------
Jean Pierre.
Reply

Marsh Posté le 26-03-2004 à 03:24:53    

eh ne vous enguelez pas pour ca j ouvrirais un autre topic la prochaine fois aigle a raison ce sont des questions totalement differentes.
Merci pour votre aide je commence a comprendre le fonctionnement.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed