Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1601 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  rediriger le flux echo $path | grep u$

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

rediriger le flux echo $path | grep u$

n°560041
weed
Posté le 21-09-2004 à 16:06:25  profilanswer
 

voila je cherche une commande qui me permettrait de lire la ligne X dans un fichier.  
 
J'ai regarder du coté de tail mais on est obliger d'utiliser les options - ou +....


Message édité par weed le 21-09-2004 à 20:19:08
mood
Publicité
Posté le 21-09-2004 à 16:06:25  profilanswer
 

n°560043
cycojesus
Mèo Lười
Posté le 21-09-2004 à 16:14:45  profilanswer
 

awk :  
 

Code :
  1. awk '{if (NR == numéro_de_ligne) print $0}' fichier_à_lire


Message édité par cycojesus le 21-09-2004 à 16:15:34

---------------
Chết rồi ! ✍ ⌥⌘ http://github.com/gwenhael-le-moine/slackbuilds/
n°560053
weed
Posté le 21-09-2004 à 16:27:43  profilanswer
 

impécable.
 
je connais pas tres bien awk. Dans les exemple simple, j'ai vu que je pouvais le remplacer par un simple cut ....
 
Mais visiblement ca permet bcp plus de chose que ca, il faudrait que passe un peu de temps à comprendre comment fonctionne awk, j'ai l'impression

n°560065
bobuse
Posté le 21-09-2004 à 16:44:43  profilanswer
 

c'est effectivement bougrement pratique pour le traitement de flux de caractères ;)


---------------
get amaroK plugin
n°560068
weed
Posté le 21-09-2004 à 16:48:24  profilanswer
 

arf zut je n'arrive pas à utiliser une variable dans le awk pour le numéro de ligne comment faut il s'y prendre ?
 
lorsque je remplace $i par un chiffre par exemple 2, ca fonctionne bien mais pas avec une variable.

Code :
  1. max=`wc -l filedesti | cut -d " " -f 1`;
  2. declare -i i;
  3. for ((i=1 ;i <=max; i++))
  4. do
  5.         filepath=`awk '{if (NR == $i) print $0}' filedesti`;
  6.         echo $i _ $filepath;
  7. done


n°560069
weed
Posté le 21-09-2004 à 16:51:08  profilanswer
 

pour que ce soit plus explicite le programme me retourne :
 
 

Code :
  1. [weedalex@localhost Documents]$ ./guillbis /home/weed/Documents/prog/ /home/weed/Documents/prog/
  2. hhh
  3. 1 _
  4. 2 _
  5. 3 _
  6. 4 _
  7. 5 _
  8. 6 _
  9. 7 _
  10. 8 _
  11. 9 _
  12. .....
  13. 104 _
  14. 105 _
  15. [weed@localhost Documents]$

n°560073
cycojesus
Mèo Lười
Posté le 21-09-2004 à 16:57:13  profilanswer
 

la solution que j'ai trouvé pour utiliser une variable dans awk c'est ce genre de chose (extrait de script) :

Code :
  1. gawk -v racine=$RACINE -v annee=$ANNEE -v mois=$MOIS -v jour=$JOUR '{ if (NR == 15) { printf "user_pref(\"browser.download.dir\", \"%s/%s/%s/%s\" );\n", racine, annee, mois, jour } else { print $0 } }' $PREFS_JS


 
l'option -v de awk défini une variable dans le script awk


Message édité par cycojesus le 21-09-2004 à 16:59:42

---------------
Chết rồi ! ✍ ⌥⌘ http://github.com/gwenhael-le-moine/slackbuilds/
n°560104
weed
Posté le 21-09-2004 à 17:25:17  profilanswer
 

merci beaucoup cycojesus  
je pensais que ca allais compliqué ton astuce mais non, j'ai compris ;)
 
 

Code :
  1. for ((i=1 ;i <=max; i++))
  2. do
  3.         filepath=`gawk -v n=$i '{if (NR == n) print $0}' filedesti`;
  4.         echo $i _ $filepath;
  5. done

n°560108
fguilleme
Posté le 21-09-2004 à 17:39:01  profilanswer
 

pour ton truc t'as
awk '{ print NR,$0; }'  ton_fichier
NR est une variable interne de awk qui donne le numéro de la ligne

n°560112
bobuse
Posté le 21-09-2004 à 17:54:51  profilanswer
 

il suffit de fermer et réouvrir les guillemets sinon ;)

filepath=`awk '{if (NR == '$i') print $0}' filedesti`;


ça devrait marcher comme ça ;)


---------------
get amaroK plugin
mood
Publicité
Posté le 21-09-2004 à 17:54:51  profilanswer
 

n°560180
weed
Posté le 21-09-2004 à 20:17:19  profilanswer
 

A tout hasard comment peut 'on tester le dernier caractère d'une variable ?
 
j'ai réussi en faisant un :
 echo $path | grep /$ && r=$path || r=$path$slash
je teste si la variable path contient le caractère / à la fin, si ce n'est pas je rajoute le caractère / (en fait $slash) et j'affecte à r....
 
Ca marche mais le probleme c'est que le premier echo affiche path. Peut t'on redirger le flux de echo avec les pipes de facon à ce que echo $path n'affiche plus à l'écran.
 
sinon j'ai regardé su coté de awk, il existe bien la variable $NF mais awk necessite l'utilisation d'un fichier alors que j'aimerais tester une variable.

n°560338
bobuse
Posté le 22-09-2004 à 09:48:35  profilanswer
 

ce n'est pas le echo qui affiche la chaine mais grep ;)
Il suffit de rajouter une redirection vers le "puit sans fond" /dev/null :

echo $path | grep /$ > /dev/null && r=$path || r=$path$slash


---------------
get amaroK plugin
n°560340
bobuse
Posté le 22-09-2004 à 09:50:40  profilanswer
 

awk ne nécessite pas forcément un fichier !

echo "pouet" | awk '{ print substr($1,length($1)); }'

me donne : "t"


---------------
get amaroK plugin
n°560675
weed
Posté le 22-09-2004 à 21:18:00  profilanswer
 

un tres grand merci à toi bobuse. La prochaine fois je saurais ...
et merci pour l'astuce du awk.  
 
Juste une petite remarque si je puis me permettre, dans ton cas, subchar serait presque plus adapté. La fonction subchar n'existe peut etre pas par contre en bash ;)

n°560829
serialclea​ner
Posté le 23-09-2004 à 11:16:53  profilanswer
 

weed a écrit :

voila je cherche une commande qui me permettrait de lire la ligne X dans un fichier.  
 
J'ai regarder du coté de tail mais on est obliger d'utiliser les options - ou +....


Pas très élégant : tail +[num_ligne] | head -1


---------------
Un bon script vaut tous les clicks du monde. | Errements Alternatifs
n°560863
weed
Posté le 23-09-2004 à 12:30:43  profilanswer
 

arf zut j'avais oublié cette fonction. Je l'ai juste utilisé une fois pour depanner quelqu'un. En effet c'est la methode la plus éléguante.
merci serialcleaner


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  rediriger le flux echo $path | grep u$

 

Sujets relatifs
une source, 2 grepprobleme de path avec firefox
[RESOLU] Grep? awk?(resolu) => Pb sur l'expression reguliererediriger la sortie standard vers 2 fichiers à la fois ?
dpencoder : problème lors du lancement (prob de path ?)pb de path
plugin mplayer pour lire le flux rtsp par firefox[flux rss]
flux sur carte reseauProblème d'écho avec un casque+micro
Plus de sujets relatifs à : rediriger le flux echo $path | grep u$


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR