2016-10-27 4 views
1

Ich habe das folgende Skript, das ein Kennwort mithilfe einer Kennwortdatei ändert, die ich das Kennwort in das richtige Format eingegeben habe. Der nächste Befehl benötigt jedoch eine Kennwortdatei mit einem überarbeiteten Format. Im Moment löschen i gerade und neu erstellen Sie die Datei, aber es wäre schön, es nur statt zu bearbeiten, im nur nicht sicher, wie:Suchen und Ersetzen von Text mit einem Bash-Skript

sudo touch /tmp/password.txt 
sudo chmod 600 /tmp/password.txt 
sudo echo "AS_ADMIN_PASSWORD=" > /tmp/password.txt 
sudo echo "AS_ADMIN_NEWPASSWORD=Pa55w0rd2" >> /tmp/password.txt 
sudo /opt/glassfish3/bin/asadmin --user admin --passwordfile /tmp/password.txt change-admin-password \ 
    --domain_name domain1 
sudo rm /tmp/password.txt 
sudo touch /tmp/password.txt 
sudo chmod 600 /tmp/password.txt 
sudo echo "AS_ADMIN_PASSWORD=Pa55w0rd2" > /tmp/password.txt 
sudo /opt/glassfish3/bin/asadmin --user admin --passwordfile /tmp/password.txt enable-secure-admin 
+2

Nicht verwandt mit Ihrer Frage, aber beachten Sie, dass 'sudo echo" AS_ADMIN_PASSWORD = ">/tmp/password.txt' wahrscheinlich nicht tut, was Sie denken, dass es tut. Das 'sudo' ist ein No-Op, weil die I/O-Umleitung'>/tmp/password.txt 'in Ihrer lokalen Shell vor dem Aufruf des Befehls passiert. – larsks

Antwort

1

perfekte Job für sed:

sed -i '/^AS_ADMIN_PASSWORD=/d' /tmp/password.txt 

Diese Löscht die Zeile, die der gegebenen Regex entspricht, in-place.