Da ich das Verzeichnis geändert habe, möchte ich alle Umgebungsvariablen in der Datei ändern.
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
ich möchte das machen
Mit anderen Worten ../${dir}/ Wenn Sie den Teil von löschen möchten.
Erfolgreiche sind die folgenden Befehle
python
sed -i s@'../${dir}/'@@g test.sh
** Erklärung **
Die Syntax von sed, die häufig bei der Suche angezeigt wird, lautet wie folgt (Dies ist der Grund, warum ich mehr Probleme habe)
python
sed 's/Die Zeichenfolge, die Sie ersetzen möchten/Zeichenkette nach dem Ersetzen/g'Geben Sie den Dateinamen ein
g bedeutet, alle Zeichenfolgen in der Eingabedatei zu ersetzen.
Optionen hinzufügen
python
sed -i 's/Die Zeichenfolge, die Sie ersetzen möchten/Zeichenkette nach dem Ersetzen/g'Geben Sie den Dateinamen ein
Mit der Option -i können Sie die Datei ohne Pipe & Cat überschreiben.
Diesmal ist es viele Male fehlgeschlagen, also habe ich nach der Option -i ".org" hinzugefügt.
python
sed -i".org" 's/Die Zeichenfolge, die Sie ersetzen möchten/Zeichenkette nach dem Ersetzen/g'Geben Sie den Dateinamen ein
Dadurch wird test.sh.org erstellt und ein Backup erstellt.
Jetzt ist es der Ersatz des speziellen Symbols des Hauptthemas. Vorläufig habe ich Folgendes versucht.
python
sed -i".org" 's/../${dir}///g' test.sh
sed: -e expression #1, char 13: unknown option to `s'
Ich bekomme eine Fehlermeldung. Der Schrägstrich scheint das Problem zu sein.
Fügen Sie dann die Zeichenfolge ein, die Sie durch '' ersetzen möchten.
python
sed -i".org" 's/'../${dir}/'//g' test.sh
sed: -e expression #1, char 7: unknown option to `s'
Wenn Sie es nachschlagen, wenn die Zeichenfolge ein "/ (Schrägstrich)" enthält Es scheint gut, den Schrägstrich in ein anderes Symbol zu ändern. Ich habe diesmal "@" verwendet, aber ":", "*", "#" usw. Es scheint, dass jedes Symbol, das nicht in der Zeichenfolge verwendet wird, ausreicht.
python
sed -i".org" 's@'../${dir}/'@@g' test.sh
test.sh
${difile1.txt
${difile2.txt
${difile3.txt
${difile4.txt
${difile5.txt
Was ist das···
test.sh.org
../../${dir}/file1.txt
../../${dir}/file2.txt
../../${dir}/file3.txt
../../${dir}/file4.txt
../../${dir}/file5.txt
Ich bin froh, dass ich ein Backup gemacht habe.
mv test.sh.org test.sh
Ich habe verschiedene Dinge ausprobiert, aber nicht alle
python
sed -i".org" "s@'../${dir}/'@@g" test.sh
sed -i".org" "s@../${dir}/@@g" test.sh
Nach einigem Ausprobieren scheint es, dass der sed-Befehl selbst keinen Schrägstrich benötigt.
python
sed -i".org" s@../${dir}/@@g test.sh
Ist die Zeichenkette richtig eingeschlossen?
python
sed -i".org" s@'../${dir}/'@@g test.sh
Erfolgreich.
Es war ein Fall, in dem ich dachte, ich müsste über die Bedeutung von Zitaten nachdenken.
Recommended Posts