Tengo un archivo que consta de una URL . Estoy tratando de obtener la URL de ese archivo usando un script de shell.
En el archivo, la URL es así:
('URL', 'http://url.com');
Traté de usar lo siguiente:
cat file.php | grep 'URL' | awk '{ print $2 }'
Da la salida como:
'http://url.com');
Pero solo necesito obtener url.comuna variable dentro del script de shell. ¿Cómo puedo lograr esto?

cat file.php | grep 'URL' | cut -d "'" -f 4.http://url.comno diourl.com/in sed, generalmente debería usar un delimitador diferente, por ejemplosed s@http://@@g.Puedes hacer todo con un simple
grep:De
man grep:El truco es usar lo
\Kque, en Perl regex, significadiscard everything matched to the left of the \K. Por lo tanto, la expresión regular busca cadenas que comienzan conhttp://(que luego se descartan debido a\K) seguidas de la mayor cantidad'posible de no caracteres. En combinación con-oesto, esto significa que solo se imprimirá la URL.También puedes hacerlo en Perl directamente:
fuente
Prueba esto,
fuente
echo "define('URL', 'http://url.com');" | awk -F// '{print $2}' | cut -d "'" -f 1url.coma una url diferente, así como abc.com, es dinámico y necesito tomar esta url usando el script de shell.Revisando esto nuevamente, y tratando de usar nada más que un shell Bash, otra solución de una línea es:
Donde file.in contiene la lista de URL 'sucia' y file.out contendrá la lista de URL 'limpia'. No hay dependencias externas y no hay necesidad de generar nuevos procesos o subcapas. La explicación original y un guión más flexible siguen. Hay una buena Resumen del método aquí , véase el ejemplo 10-10. Esta es la sustitución de parámetros basada en patrones en Bash.
Ampliando la idea:
Resultado:
No es necesario llamar a ningún programa externo. Además, el siguiente script bash
get_urls.sh, le permite leer un archivo directamente o desde stdin:fuente
[t]csh, por lo que es bueno para sh, bash, dash, ksh, zsh ...Si todas las líneas contienen una URL:
Si solo algunas líneas contienen una URL:
Dependiendo de las otras líneas, puede que necesite cambiar la
^defineexpresión regularfuente
awk -F"'|http://" '/^define/ {print $5}' file.php | cut -d ")" -f 1Simple:
y si necesita eliminar el 'http: //', entonces:
Entonces:
Si necesita cierta parte de la URL, necesita refinar su terminología, una URL es todo lo siguiente, a veces más:
fuente
para mí, las otras
greprespuestas dan información de cadena de retorno después del enlace.Esto funcionó para mí solo para sacar el
url:fuente