Obtener las URL del texto

Obtener las URL del texto

Obtengo un archivo de texto apt-get --print-uris dist-upgrade > /mnt/URIs.txt, quiero descargar todos los paquetes con las URL proporcionadas por el archivo de texto, solo el texto entre '' es URL. Cómo eliminar el resto porque solo se usan URL y símbolos de retorno para descargar mediante el navegador de Internet. .

Respuesta1

El resultado de apt-get --print-uris dist-upgrademayo se parece a esto:

Reading package lists...
Building dependency tree...
Reading state information...
Calculating upgrade...
The following packages will be upgraded:
  evolution-data-server evolution-data-server-common gir1.2-goa-1.0
  gnome-online-accounts libcamel-1.2-62 libebackend-1.2-10 libebook-1.2-20
  libebook-contacts-1.2-3 libecal-2.0-1 libedata-book-1.2-26
  libedata-cal-2.0-1 libedataserver-1.2-24 libedataserverui-1.2-2
  libgoa-1.0-0b libgoa-1.0-common libgoa-backend-1.0-1 libyelp0 linux-libc-dev
  python-apt-common python3-apt yelp
21 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 4,358 kB of archives.
After this operation, 16.4 kB of additional disk space will be used.
'http://se.archive.ubuntu.com/ubuntu/pool/main/p/python-apt/python-apt-common_2.0.0ubuntu0.20.04.5_all.deb' python-apt-common_2.0.0ubuntu0.20.04.5_all.deb 17052 MD5Sum:a9e11f5f8671c5069f5edaef32e2f620
'http://se.archive.ubuntu.com/ubuntu/pool/main/p/python-apt/python3-apt_2.0.0ubuntu0.20.04.5_amd64.deb' python3-apt_2.0.0ubuntu0.20.04.5_amd64.deb 154164 MD5Sum:8590dd473b444f2756e5c7498e00e7ec
'http://se.archive.ubuntu.com/ubuntu/pool/main/g/gnome-online-accounts/libgoa-1.0-common_3.36.1-0ubuntu1_all.deb' libgoa-1.0-common_3.36.1-0ubuntu1_all.deb 3752 MD5Sum:9252da969452bdf88527829a752ac175

(esta salida está truncada)

Suponiendo que desea analizar los URI "limpios" de lo anterior, el siguiente sedcomando eliminaría todas las líneas desde la primera hasta la que comienza con la cadena After(inclusive). De las líneas restantes, eliminaría todo lo que está después del espacio y luego eliminaría el primer y último carácter de la línea modificada (esto eliminaría las comillas simples que rodean los URI).

sed '1,/^After/d; s/ .*//; s/.//; s/.$//'

Usando esto en mi breve ejemplo de salida anterior:

$ sed '1,/^After/d; s/ .*//; s/.//; s/.$//' file
http://se.archive.ubuntu.com/ubuntu/pool/main/p/python-apt/python-apt-common_2.0.0ubuntu0.20.04.5_all.deb
http://se.archive.ubuntu.com/ubuntu/pool/main/p/python-apt/python3-apt_2.0.0ubuntu0.20.04.5_amd64.deb
http://se.archive.ubuntu.com/ubuntu/pool/main/g/gnome-online-accounts/libgoa-1.0-common_3.36.1-0ubuntu1_all.deb

Dados los mismos datos de entrada, el comando

sed -n "s,.*\(http://[^']*\).*,\1,p" file

también funcionaría. Esto intenta hacer coincidir cualquier subcadena que comience http://y termine antes de una comilla simple. Luego reemplaza toda la línea con esa subcadena e imprime la línea modificada. Las líneas que no coinciden se descartan.

información relacionada