J'ai un fichier composé d'une URL . J'essaye d'obtenir l'URL de ce fichier en utilisant un script shell.
Dans le fichier, l'URL est comme ceci:
('URL', 'http://url.com');
J'ai essayé d'utiliser ce qui suit:
cat file.php | grep 'URL' | awk '{ print $2 }'
Il donne la sortie comme:
'http://url.com');
Mais je dois obtenir seulement url.com
dans une variable à l'intérieur du script shell. Comment puis-je accomplir cela?
cat file.php | grep 'URL' | cut -d "'" -f 4
.http://url.com
pasurl.com
/
in sed, vous devez généralement utiliser un délimiteur différent, par exemplesed s@http://@@g
.Vous pouvez tout faire avec un simple
grep
:De
man grep
:L'astuce consiste à utiliser
\K
ce qui, en expression rationnelle Perl, signifiediscard everything matched to the left of the \K
. Ainsi, l'expression régulière recherche les chaînes commençant parhttp://
(qui sont ensuite supprimées à cause de\K
) suivies par autant de non-'
caractères que possible. Combiné avec-o
, cela signifie que seule l'URL sera imprimée.Vous pouvez également le faire directement en Perl:
la source
Essaye ça,
la source
echo "define('URL', 'http://url.com');" | awk -F// '{print $2}' | cut -d "'" -f 1
url.com
vers une URL différente, comme abc.com, sa dynamique et j'ai besoin de saisir cette URL en utilisant un script shell.Revisitant cela à nouveau et essayant de n'utiliser rien d'autre qu'un shell Bash, une autre solution d'une ligne est la suivante:
Où file.in contient la liste d'url «sale» et file.out contiendra la liste d'URL «propre». Il n'y a pas de dépendances externes et il n'est pas nécessaire de générer de nouveaux processus ou sous-coquilles. L'explication originale et un script plus flexible suivent. Il y a un bon résumé de la méthode ici , voir l'exemple 10-10. Il s'agit d'une substitution de paramètres basée sur un modèle dans Bash.
Développer l'idée:
Résultat:
Pas besoin d'appeler de programmes externes. De plus, le script bash suivant
get_urls.sh
, vous permet de lire un fichier directement ou depuis stdin:la source
[t]csh
positif , cela fonctionne avec à peu près n'importe quel shell sauf , donc c'est bon pour sh, bash, dash, ksh, zsh ...Si toutes les lignes contiennent une URL:
Si seulement certaines lignes contiennent une URL:
Selon les autres lignes, vous devrez peut-être modifier l'
^define
expression régulièrela source
awk -F"'|http://" '/^define/ {print $5}' file.php | cut -d ")" -f 1
Facile:
et si vous devez supprimer le 'http: //', alors:
Donc:
Si vous avez besoin d'une certaine partie de l'URL dont vous avez besoin pour affiner votre terminologie, une URL est tout ce qui suit, parfois plus:
la source
pour moi, les autres
grep
réponses données retournent des informations de chaîne après le lien.Cela a fonctionné pour moi de ne retirer que
url
:la source