grep, prendre la ligne suivante
Le
Une Bévue
bon, je demande pour grep, mais peut-être n'est-ce pas la bonne commande.
en connection via ssh, le script distant me revoit tout un tas de trucs :
yt@D620 ~ % recette
url = http://recettessimples.fr/news/feui...neufchatel
is_ssh = true
Entrez un type de recette :
Accompagnement [0]
Amuse-gueule [1]
Aperitif [2]
[.]
Vins [46]
17
ssh_category = Entree
l_path =
/Users/yt/Sites/Recettes/Entree/feuillete-au-coeur-de-neufchatel_fichiers/hoverbox.css
l_path =
/Users/yt/Sites/Recettes/Entree/feuillete-au-coeur-de-neufchatel_fichiers/feuillete-au-coeur-de-neufchatel
Downloading
'http://recettessimples.fr/news/feui...neufchatel' to
'/Users/yt/Sites/Recettes/Entree/feuillete-au-coeur-de-neufchatel_fichiers/feuillete-au-coeur-de-neufchatel'
done.
[.]
l_path =
/Users/yt/Sites/Recettes/Entree/feuillete-au-coeur-de-neufchatel_fichiers/Feuillete_Coeur_Neuchatel_entoure_de_pate_t.jpg
l_path =
/Users/yt/Sites/Recettes/Entree/feuillete-au-coeur-de-neufchatel_fichiers/tounge_smile.gif
iMac's URL :
http://[2a01:<coupé par
moi>:2559]/Recettes/index.html?page=/Recettes/Entree/feuillete-au-coeur-de-neufchatel.html
je souhaite récupérer la dernière ligne ci-dessus, celle qui est juste
après la ligne "iMac's URL :".
il y a peut-être "mieux" que grep pour cela, je connais --très mal-- les
outils unix.
aussi je peux changer facilement la sortie du script appelé via ssh,
c'est du ruby.
côté linux ma connection ssh se fait ainsi :
--
#!/usr/bin/zsh
URL=(`/usr/bin/xclip -o`)
SRV=yt@iMac
RMT_HOME="/Users/yt"
RMT_RECETTE="${RMT_HOME}/bin/recette"
/usr/bin/ssh ${SRV} "echo '${URL}' | pbcopy; ${RMT_RECETTE}"
exit 0
--
le but de la manip était d'avoir, dans une variable, disons URL, la
chaîne retournée et faire :
/usr/bin/xdg-open ${URL}
et ainsi ouvrir l'URL dans le navigateur par défaut.
en connection via ssh, le script distant me revoit tout un tas de trucs :
yt@D620 ~ % recette
url = http://recettessimples.fr/news/feui...neufchatel
is_ssh = true
Entrez un type de recette :
Accompagnement [0]
Amuse-gueule [1]
Aperitif [2]
[.]
Vins [46]
17
ssh_category = Entree
l_path =
/Users/yt/Sites/Recettes/Entree/feuillete-au-coeur-de-neufchatel_fichiers/hoverbox.css
l_path =
/Users/yt/Sites/Recettes/Entree/feuillete-au-coeur-de-neufchatel_fichiers/feuillete-au-coeur-de-neufchatel
Downloading
'http://recettessimples.fr/news/feui...neufchatel' to
'/Users/yt/Sites/Recettes/Entree/feuillete-au-coeur-de-neufchatel_fichiers/feuillete-au-coeur-de-neufchatel'
done.
[.]
l_path =
/Users/yt/Sites/Recettes/Entree/feuillete-au-coeur-de-neufchatel_fichiers/Feuillete_Coeur_Neuchatel_entoure_de_pate_t.jpg
l_path =
/Users/yt/Sites/Recettes/Entree/feuillete-au-coeur-de-neufchatel_fichiers/tounge_smile.gif
iMac's URL :
http://[2a01:<coupé par
moi>:2559]/Recettes/index.html?page=/Recettes/Entree/feuillete-au-coeur-de-neufchatel.html
je souhaite récupérer la dernière ligne ci-dessus, celle qui est juste
après la ligne "iMac's URL :".
il y a peut-être "mieux" que grep pour cela, je connais --très mal-- les
outils unix.
aussi je peux changer facilement la sortie du script appelé via ssh,
c'est du ruby.
côté linux ma connection ssh se fait ainsi :
--
#!/usr/bin/zsh
URL=(`/usr/bin/xclip -o`)
SRV=yt@iMac
RMT_HOME="/Users/yt"
RMT_RECETTE="${RMT_HOME}/bin/recette"
/usr/bin/ssh ${SRV} "echo '${URL}' | pbcopy; ${RMT_RECETTE}"
exit 0
--
le but de la manip était d'avoir, dans une variable, disons URL, la
chaîne retournée et faire :
/usr/bin/xdg-open ${URL}
et ainsi ouvrir l'URL dans le navigateur par défaut.

Poser une question


grep -A 1 "iMac's URL :" | tail -n 1
ou bien
grep -A 1 "iMac's URL :" | grep -v "iMac's URL :"
L'idée est demander à grep de fournir, en plus, la ligne juste après
la ligne qui contient le texte, puis de supprimer cette dernière.
apparemment ce ne serait pas possible avec grep mais avec awk :
~ % awk "/iMac's URL :/ { getline; print }" http://[2a01:<coupé par
moi>:2559]/Recettes/index.html?page=/Recettes/Entree/feuillete-au-coeur-de-neufchatel.html
reste + qu'à mettre ça entre '' et ouvrir avec xdg-open.
OK, merci beaucoup, tes deux solutions marchent très bien.
Celle que j'ai trouvée sur le net avec awk aussi.
donc, je pense donc changer la dernière ligne de mon script :
/usr/bin/ssh ${SRV} "echo '${URL}' | pbcopy; ${RMT_RECETTE}"
par qqc du genre :
URL=(`/usr/bin/ssh ${SRV} "echo '${URL}' | pbcopy; ${RMT_RECETTE}" |
grep -A 1 "iMac's URL :" | tail -n 1 `)
URL="'${URL}'" # pour mettre l'URL entre ''
/usr/bin/xdg-open ${URL}
y-a t'il un moyen plus simple pour mettre "http://..." entre ''
(nécessité par xdg-open) ?
ben, je viens de vérifier au terminal, c'est inutile, et nuisible, quand
l'URL est obtenue par scripting.
ce que j'ai fait :
~ % URL=(`cat Bureau/ssh-rep.txt | grep -A 1 "iMac's URL :" |
tail -n 1 `)
~ % xdg-open $URL
~ % Nouvelle fenêtre ouverte dans la session du navigateur
~ %
Bureau/ssh-rep.txt représentant le résultat de ma commande ssh.