En Terminal.app, he utilizado la función curl ftp
... para obtener un listado de directorios de carpetas y archivos del ordenador de mi amigo y dirigí la salida a un archivo llamado "curlFTP.txt". Cada línea de este archivo aparece como estos 3 ejemplos siguientes...
- drwxr-xr-x 1 nobody Root 4096 Ago 02 2014 WEDDING_SINGER_4X3
- drwxr-xr-x 1 nobody Root 4096 Ago 02 2014 WEEKEND_AT_BERNIES
- drwxr-xr-x 1 nobody Root 4096 Ago 02 2014 WEIRD_SCIENCE
De cada una de estas líneas de ese archivo, sólo necesito mantener los nombres de los directorios, que serían...
- WEDDING_SINGER_4X3
- FIN DE SEMANA_EN_BERNIES
- CIENCIA_EXTRAÑA
Utilizando el cut -c 52-
pude extraer sólo estos nombres de carpetas que luego dirigí su salida a un archivo que llamé "curlFTP2.txt"
El siguiente paso que tenía que hacer era anteponer a cada línea del archivo "curlFTP2.txt" el texto... curl ftp://1.1.1.1/Disk\ 1\ Movies/Movies\ 1/
y dirigir su salida a un archivo llamado "curlFTP3.txt". Ahora cada línea del archivo "curlFTP3.txt" se vería como estos tres ejemplos...
curl ftp://1.1.1.1/Disk 1 Movies/Movies 1/WEDDING_SINGER_4X3
curl ftp://1.1.1.1/Disk 1 Movies/Movies 1/WEEKEND_AT_BERNIES
curl ftp://1.1.1.1/Disk 1 Movies/Movies 1/WEIRD_SCIENCE
Aquí está el comando completo que utilicé, que funcionó increíblemente bien y fue extremadamente rápido, teniendo en cuenta que había 760 líneas en el archivo para editar.
cat curlFTP.txt | cut -c 52- > curlFTP2.txt ; sed 's|^|curl ftp://1.1.1.1/Disk\ 1\ Movies/Movies\ 1/|g' curlFTP2.txt > curlFTP3.txt
(la dirección IP que he utilizado en esto es un sustituto de la dirección IP que realmente he utilizado)
Aquí es donde estoy atascado lo que tengo que hacer es utilizar el sed
con el comando -e
para poder añadir un argumento adicional sed
al código de arriba y añadir un "/" al final de cada línea de ese archivo porque cada listado es un directorio.
Necesito que cada línea tenga este aspecto: curl ftp://1.1.1.1/Disk 1 Movies/Movies 1/WEDDING_SINGER_4X3/
En lugar de que cada línea se vea como: curl ftp://1.1.1.1/Disk 1 Movies/Movies 1/WEDDING_SINGER_4X3
Pude averiguar que usando el sed 's|^|blah|g'
por ejemplo, el carácter "^" significaría añadir "blah" al principio de cada línea.
Así que esta es mi pregunta ¿hay algún carácter similar que pueda usar, como el carácter "^", que me permita usar el sed
para añadir texto al final de cada línea?
1 votos
Sí, lo es:
$
0 votos
Tío, eres el mejor Muchas gracias, hermano.
0 votos
No es necesario
cat
,|
ocut
Podrías hacerlo en un solo paso con, por ejemplo,:sed -E -e 's|^.*[A-Za-z]{3}[ ][0-9]{2}[ ][0-9]{4}[ ]|curl ftp://1.1.1.1/Disk 1 Movies/Movies 1/|' -e 's|$|/|' curlFTP.txt > newfile.txt
0 votos
Vaya. Me has dado mucho que masticar ahora voy a tener que arremangarme y empezar a enseñarme expresiones regulares y estudiar la página man sed. Tu solución es impresionante. Añádela como respuesta y la votaré y la aceptaré.