En utilisant wget, une page Web est téléchargée en tant que fichier .txt. Ce fichier enregistré est nommé en utilisant une partie de l'URL de la page Web, par exemple. wget http://www.example.com/page/12345/ -O 12345.txt
, pour plus de commodité.Utilisez sed find ID dans le fichier txt et utilisez l'ID pour renommer le fichier
Je cours des commandes à partir d'un script shell .sh
, car il peut exécuter plusieurs commandes, une ligne à la fois, par exemple. Après le téléchargement d'un fichier, j'utilise sed pour analyser le texte/les caractères que je veux conserver. Une partie du texte que je veux comprend blah blah Product ID a5678
. Ce que je veux est d'utiliser sed pour trouver a5678
et l'utiliser pour renommer le fichier 12345.txt en a5678.txt.
# script.sh
wget http://www.example.com/page/12345/ -O 12345.txt
sed -i '' 's/pattern/replace/g' 12345.txt
sed command to find a5678 # in line blah blah Product ID a5678
some more sed commands
mv 12345.txt a5678.txt (or use a variable $var.txt)?
Comment procéder?
Je peux également utiliser ce même ID a5678
et créer un dossier portant le même nom a5678
. D'où le fichier .txt est dans le dossier comme si /a5678/a5678.txt
.
mkdir a5678 (or mkdir $var)? && cd a5678
J'ai cherché des réponses pendant une demi-journée, mais n'en trouve aucune. Le plus proche que j'ai trouvé est Find instance of word in files and change it to the filename mais c'est exactement le contraire de ce que je veux. J'ai aussi pensé à utiliser des variables, par exemple. https://askubuntu.com/questions/76808/how-do-i-use-variables-in-a-sed-command mais je ne sais pas comment enregistrer les caractères trouvés en tant que variable.
Nous espérons avoir de l'aide! Je vous remercie! Je suis sur un Mac tournant Sierra.
Sauf si vous êtes caractères _replacing_ dans les fichiers, je pourrais simplement utiliser 'la place grep', couper les résultats pour extraire les chaînes dont j'ai besoin de changement de nom . Ou passer à perl ... – jdv