2016-08-01 7 views
-1

Wie kann ich den Shell-Skript aktualisieren ersetzen, wo ich username „u1“ auf einem beliebigen Wert von Benutzereingaben in einer TXT-DateiWie kann ich die Benutzername und Passwort einen Shell-Skript

'username' => "u1" 

Im Folgenden finden Sie ersetzen der vorhandene Code: -

#!bin/bash 
echo "\nEnter Username to replace: " 
read name 

sed -i -e s/u1/"$name"/g /var/1.txt 

Antwort

0

Mit sed, können wir eine Aussage in zwei Teile gespalten - und ersetzen den zweiten Teil mit der benötigte Variable [hier, $ name] - anstatt das Skript mit u1 fest zu codieren.

mit -r

awk -v name="$name" '/username/{gsub($3,"\""name"\"")};1' /var/1.txt

+0

und wenn ich ein Komma am Ende von $ name hinzufügen muss, wie kann ich damit umgehen? Beispiel: - $ name = admin Ausgabe: - admin, –

0

Try '$ name' anstelle von "$ name"

die beste Option ist zu verwenden, sed -i -r

sed -i -r 's/u1/'$name'/g' /var/1.txt 

Eine weitere Option, die Sie versuchen können, ist diese Datei zu Temp speichern und

bewegen zurück

Beispiel:

sed 's/u1/'$name'/g' /var/1.txt > /tmp/temp 

mv /tmp/temp /var/1.txt 
+0

Die Option super funktioniert:

sed -i "s#\(.*'username' =>\)\(.*\)#\1 "\"$name\""#" /var/1.txt

Das gleiche Ergebnis kann mit awk wie unten erreicht werden! Danke vielmals. In der nächsten Iteration übergebe ich die Eingabe "u3", um durch "u2" ersetzt zu werden (von der vorherigen Ausführung des obigen Codes wird der Wert "u2" durch "u1" ersetzt). Wie kann das gehandhabt werden? –

+0

Ich habe Ihre Anforderung nicht vollständig verstanden. Setze sed in die Schleife. Bitte beachten Sie auch meine Antwort upvote, wenn Sie die Antwort bekommen sie –

+0

ich auf der Suche „u1“ oder einen anderen Wert vom Eingang Beispiel ersetzt werden soll: - ‚username‘ => „u1“ Eingangswert -> u2 o/p: - 'username' => "u2" Code erneute Ausführung: - 'username' => "u2" Eingangswert -> u3 o/p Ergebnisse: - ‚username '=> "u3" –

Verwandte Themen