I haben die folgenden Inhalte in einer Datei, unterteilt in Felder:mit dem Wert von anderen Linie
$ cat list
ldap 12309423409875
account01 98734598073
notes 4736594384325
I den Wert des zweiten Feldes geändert werden soll, indem eine Eingabe von dem Benutzer unter der zuerst entspricht Feld, mit awk. Zum Beispiel bitte ich den Benutzer, das Feld einzugeben; wenn er ldap
eingibt, dann sollte ich in der Lage sein, dem zweiten Feld der ersten Zeile einen anderen Wert zu geben.
Ich habe versucht, das folgende Skript, aber es hat nicht funktioniert:
generatepasswd()
{
date | md5sum
return
}
cat list
echo "for what do you want to change the password"
pass=`generatepasswd`
read op
awk '$1=="$op"{$2=$pass}1' list > tmp && mv tmp list
ich die Ausgabe, wenn ich die Zeichenfolge direkt statt $op
verwenden; zum Beispiel, wenn ich ldap
verwende, bekomme ich das Ergebnis, aber wenn ich $op
verwende, bekomme ich keine Ausgabe. op
besteht aus der Zeichenfolge ldap
.
Wenn eine der folgenden Antworten Ihnen bei Ihrem Ziel geholfen hat, akzeptieren Sie bitte/upvote die Antwort für die Schließung, indem Sie neben der Antwort das richtige Zeichen ankreuzen. –