sed: Ändern Sie einen numerischen Wert variabler Länge für eine unbestimmte Zeichenfolge

sed: Ändern Sie einen numerischen Wert variabler Länge für eine unbestimmte Zeichenfolge

Die Zeichenfolge, die ich in einem Hardwaretreiber ändern muss.confDie Datei lautet wie folgt:

options rsi_sdio dev_oper_mode=13

Sieht einfach genug aus, aber die Entwickler ändern diesen String gerne, wodurch ein Sed-Ausdruck, der präzise übereinstimmt, nicht mehr funktioniert. Ich muss den String vor dem Wert jetzt als „unbestimmt“ behandeln; er kann nicht zuverlässig mit 100 % Genauigkeit vorhergesagt werden.

Daher kann ich nur den Wert selbst abgleichen, der selbst auch variabel sein kann: derzeit ist es „13“, aber das könnte sich in Zukunft ändern. Das einzig „Bekannte“ ist der Wert, den ich ändern muss, er kann entweder 1 oder 2 Ziffern lang sein.

Ich brauche also einen absolut sicheren regulären Ausdruck, der garantiert, dass der Wert erfolgreich festgelegt werden kann, selbst wenn sich sowohl die Zeichenfolge als auch der Wert ändern, um Fehler zu vermeiden!

Antwort1

Als die Entwickler mir diese Überraschung bereiteten, kam es tatsächlich zu einer großen Unterbrechung der drahtlosen Verbindung. Da es sich um eine Situation handelt, in der sich viele Leute wiederfinden könnten, poste ich hier meine Lösung:

sed -E -i 's/=[0-9]{1,2}$/=6/' /etc/modprobe.d/rs9113.conf

Dies entspricht dem Gleichheitszeichen, gefolgt von mindestens einer, maximal jedoch zwei Ziffern. Die Zeichenfolge kann sich also ändern, und sogar der Standardwert „13“ kann sich ändern, aber dieser reguläre Ausdruck sollte zukunftssicher bleiben.

Ich hoffe, dass andere, die mit dieser Art von großer Variabilität zu tun haben, diesen Ansatz hilfreich finden, um sicherzustellen, dass ihre Skripte korrekt bleiben.

verwandte Informationen