Comment grep curl -I informations d'en-tête
Je vais essayer d'obtenir le lien de redirection à partir d'un site à l'aide de curl -I
puis grep
à "location" et puis sed
l'emplacement du texte, de sorte que je suis parti avec l'URL.
Mais cela ne fonctionne pas. Il renvoie l'URL de l'écran et de ne pas le mettre
test=$(curl -I "http://www.redirectURL.com/" 2> /dev/null | grep "location" | sed -E 's/location:[ ]+//g')
echo "1..$test..2"
Qui ensuite sorties:
..2http://www.newURLfromRedirect.com/bla
Ce qu'il se passe?
Notez que
--silent
ou -s
de travail ainsi que 2> /dev/null
(et qui sont moins de la frappe).OriginalL'auteur Mint | 2010-06-03
Vous devez vous connecter pour publier un commentaire.
@User353852 points, vous avez un caractère de retour chariot à la sortie de
curl
qui n'est qu'apparent lorsque vous essayez deecho
n'importe quel caractère après. Leless
pager montre ce que ^MVous pouvez utiliser
sed
pour supprimer les caractères de contrôle", comme dans cet exemple:Notes:
J'ai utilisé
awk
plutôt que votregrep [...] | sed
approche, l'économie d'un processus.Pour moi,
curl
retourne l'emplacement dans une ligne commençant par 'Lieu:' (avec un grand "L"), si votre version est vraiment de rapports avec une minuscule "l", alors vous devrez peut-être modifier l'expression régulière en conséquence.OriginalL'auteur Johnsyweb
la "situation" en-tête http commence avec un L majuscule, essayez de remplacer dans votre commande.
Mise à JOUR
OK, j'ai couru deux lignes séparément et chacun fonctionne très bien, sauf qu'il ressemble à la sortie de la boucle de commande comprend certains caractères de contrôle qui est capturée dans la variable. Quand c'est plus tard imprimé dans la commande echo $variable de test est imprimée suivie par un retour chariot pour mettre le curseur au début de la ligne et puis ..2 est imprimé sur le dessus de 1..
Découvrez l' $variable de test en moins:
moins montre:
où ^M est le caractère de retour chariot.
Absolument génial! La tuyauterie pour
less
n'en évidence pourquoi "..2" est au début de la ligne.Ah oui je le vois maintenant, c'est le petit mendiant à l'origine de tous les problèmes.
OriginalL'auteur krock