Dans Terminal.app, j'ai utilisé le curl ftp
... pour obtenir une liste des dossiers et des fichiers de l'ordinateur de mon ami et j'ai dirigé la sortie vers un fichier appelé "curlFTP.txt". Chaque ligne de ce fichier ressemble aux 3 exemples suivants...
- drwxr-xr-x 1 nobody Root 4096 Aug 02 2014 WEDDING_SINGER_4X3
- drwxr-xr-x 1 nobody Root 4096 Aug 02 2014 WEEKEND_AT_BERNIES
- drwxr-xr-x 1 nobody Root 4096 Aug 02 2014 WEIRD_SCIENCE
De chacune de ces lignes de ce fichier, je n'ai besoin de garder que les noms des répertoires, qui seraient...
- CHANTEUR_DE_MARRIAGE_4X3
- WEEK-END_À_BERNIES
- WEIRD_SCIENCE
Utilisation de la cut -c 52-
j'ai pu extraire uniquement ces noms de dossiers que j'ai ensuite dirigé vers un fichier que j'ai nommé "curlFTP2.txt".
La prochaine étape que je devais faire était de faire précéder chaque ligne du fichier "curlFTP2.txt" avec le texte... curl ftp://1.1.1.1/Disk\ 1\ Movies/Movies\ 1/
et diriger sa sortie vers un fichier nommé "curlFTP3.txt". Maintenant, chaque ligne du fichier "curlFTP3.txt" devrait ressembler aux trois exemples suivants...
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
Voici la commande complète que j'ai utilisée, qui a fonctionné incroyablement bien et a été extrêmement rapide, compte tenu du fait qu'il y avait 760 lignes dans le fichier à modifier.
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
(l'adresse IP utilisée ici est un substitut de l'adresse IP que j'ai réellement utilisée)
C'est là que je suis bloqué ce que je dois faire, c'est utiliser la fonction sed
avec la commande -e
afin que je puisse ajouter un sed
au code ci-dessus et ajoutez un "/" à la fin de chaque ligne de ce fichier car chaque liste est un répertoire.
J'ai besoin que chaque ligne ressemble à ceci : curl ftp://1.1.1.1/Disk 1 Movies/Movies 1/WEDDING_SINGER_4X3/
Au lieu que chaque ligne ressemble à : curl ftp://1.1.1.1/Disk 1 Movies/Movies 1/WEDDING_SINGER_4X3
J'ai réussi à comprendre qu'en utilisant le sed 's|^|blah|g'
par exemple, le caractère "^" signifierait l'ajout de "blah" au début de chaque ligne.
Voici donc ma question existe-t-il un caractère similaire que je peux utiliser, comme le caractère "^", qui me permettrait d'utiliser la fonction sed
pour ajouter du texte à la fin de chaque ligne ?
1 votes
Oui, c'est vrai :
$
0 votes
Mec, tu es génial Merci beaucoup mon frère.
0 votes
Vous n'avez pas besoin
cat
,|
ocut
Vous pourriez le faire en une seule étape avec, par exemple, :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 votes
Wow. Vous venez de me donner beaucoup de matière à réflexion maintenant je vais devoir retrousser mes manches et commencer à m'enseigner les expressions régulières et étudier la page de manuel sed. Votre solution est assez impressionnante. Ajoutez-la en tant que réponse et je l'upvote et l'accepte.