Depuis que j'ai changé de répertoire, je souhaite modifier toutes les variables d'environnement du fichier.
test.sh
../../${dir}/file1.txt
../../${dir}/file2.txt
../../${dir}/file3.txt
../../${dir}/file4.txt
../../${dir}/file5.txt
↓
test.sh
../file1.txt
../file2.txt
../file3.txt
../file4.txt
../file5.txt
Je veux faire ça
En d'autres termes ../${dir}/ Lorsque vous souhaitez supprimer la partie de.
Les commandes réussies sont les commandes suivantes
python
sed -i s@'../${dir}/'@@g test.sh
** Explication **
La syntaxe de sed qui apparaît souvent lors de la recherche est la suivante (C'est la raison pour laquelle j'ai plus de problèmes)
python
sed 's/La chaîne de caractères que vous souhaitez remplacer/Chaîne de caractères après remplacement/g'Nom du fichier d'entrée
g signifie remplacer toutes les chaînes du fichier d'entrée.
Ajouter des options
python
sed -i 's/La chaîne de caractères que vous souhaitez remplacer/Chaîne de caractères après remplacement/g'Nom du fichier d'entrée
Vous pouvez écraser le fichier sans pipe & cat en utilisant l'option -i.
Cette fois, il a échoué plusieurs fois, j'ai donc ajouté ".org" après l'option -i.
python
sed -i".org" 's/La chaîne de caractères que vous souhaitez remplacer/Chaîne de caractères après remplacement/g'Nom du fichier d'entrée
Cela créera test.sh.org et effectuera une sauvegarde.
Maintenant, c'est le remplacement du symbole spécial du sujet principal. Pour le moment, j'ai essayé ce qui suit.
python
sed -i".org" 's/../${dir}///g' test.sh
sed: -e expression #1, char 13: unknown option to `s'
J'obtiens une erreur. La barre oblique semble être le problème.
Ensuite, entourez la chaîne de caractères que vous souhaitez remplacer par «».
python
sed -i".org" 's/'../${dir}/'//g' test.sh
sed: -e expression #1, char 7: unknown option to `s'
Si vous recherchez, s'il y a un "/ (barre oblique)" dans la chaîne Il semble bon de changer la barre oblique sed en un symbole différent. J'ai utilisé "@" cette fois, mais ":", "*", "#", etc. Il semble que tout symbole qui n'est pas utilisé dans la chaîne de caractères fera l'affaire.
python
sed -i".org" 's@'../${dir}/'@@g' test.sh
test.sh
${difile1.txt
${difile2.txt
${difile3.txt
${difile4.txt
${difile5.txt
Qu'est-ce que c'est ça···
test.sh.org
../../${dir}/file1.txt
../../${dir}/file2.txt
../../${dir}/file3.txt
../../${dir}/file4.txt
../../${dir}/file5.txt
Je suis content d'avoir fait une sauvegarde.
mv test.sh.org test.sh
J'ai essayé diverses choses, mais pas toutes
python
sed -i".org" "s@'../${dir}/'@@g" test.sh
sed -i".org" "s@../${dir}/@@g" test.sh
Après quelques essais et erreurs, il semble que la commande sed elle-même ne nécessite pas de barre oblique.
python
sed -i".org" s@../${dir}/@@g test.sh
La chaîne de caractères est-elle correctement encadrée?
python
sed -i".org" s@'../${dir}/'@@g test.sh
Réussi.
C'était un cas où je pensais devoir réfléchir à la signification des citations.
Recommended Posts