2016-05-02 16 views
0

Conf.txtWerte ersetzen in configurtation Datei mit sed

Enable_FUN         Yes 
FUN_Privilege_Level       User 
Force_FUN_Payload_Authentication    No 
Force_FUN_Payload_Encryption     No 
Character_Accumulate_Interval     12 
Character_Send_Threshold      96 
FUN_Retry_Count        7 
FUN_Retry_Interval       50 
Non_Volatile_Bit_Rate       115200 
Volatile_Bit_Rate        115200 

Ich brauche die "Volatile_Bit_Rate" Werte zu aktualisieren 115.200-38.400 Hinweis: Volatile_Bit_Rate und Non_Volatile_Bit_Rate gleiche passende String hat, auch das Format (spaces/Tabs) sollte unverändert bleiben.

Ich habe versucht in der unten genannten Weise, die funktioniert.

var=38400 
sed -i "s/\bVolatile_Bit_Rate\b/Volatile_Bit_Rate $var/" solconf 

Dann muss ich das Ende der Zeichenfolgen löschen.

Aber kann mir jemand den regulären Ausdruck in der folgenden Weise vorschlagen, die hilfreich sein wird.

sed -i "s/\bVolatile_Bit_Rate\b(expression for allspaces)(somenumbers) /Volatile_Bit_Rate(spaces)$var/" solconf 

Antwort

5

Sie tun können:

sed 's/\(^Volatile_Bit_Rate[[:blank:]]\+\)[0-9]\+$/\138400/' file.txt 

Um die Datei in Position zu bearbeiten:

sed -i 's/\(^Volatile_Bit_Rate[[:blank:]]\+\)[0-9]\+$/\138400/' file.txt 

Beispiel:

$ cat file.txt 
Enable_FUN         Yes 
FUN_Privilege_Level       User 
Force_FUN_Payload_Authentication    No 
Force_FUN_Payload_Encryption     No 
Character_Accumulate_Interval     12 
Character_Send_Threshold      96 
FUN_Retry_Count        7 
FUN_Retry_Interval       50 
Non_Volatile_Bit_Rate       115200 
Volatile_Bit_Rate        115200 

$ sed 's/\(^Volatile_Bit_Rate[[:blank:]]\+\)[0-9]\+$/\138400/' file.txt 
Enable_FUN         Yes 
FUN_Privilege_Level       User 
Force_FUN_Payload_Authentication    No 
Force_FUN_Payload_Encryption     No 
Character_Accumulate_Interval     12 
Character_Send_Threshold      96 
FUN_Retry_Count        7 
FUN_Retry_Interval       50 
Non_Volatile_Bit_Rate       115200 
Volatile_Bit_Rate        38400 
2
sed -ri "s/^(Volatile_Bit_Rate\s*)[0-9]+$/\1$var/g" file 
0

fand ich eine einfache Antwort für die oben genannte Anforderung,

sed "/ \ bVolatile_Bit_Rate \ b/s/\ b38400 \ b/115200/g" conf

0

Noch eine andere Variante:

var=38400 
sed -i "/\bVolatile_Bit_Rate\b/s/[0-9]* *\$/$var/" solconf