Функция sed для замены любой записи файла конфигурации

$ df -h --output=used /
 Used
 1.5T
1
11.05.2017, 23:08
2 ответа

Вы можете упростить набор «похожих» sed замен до следующего:

cat replace.sh 
#!/bin/bash
replace () {
var=$2  
new_val=$3

sed -e "s/^$var *= *.*/$var = $new_val/; s/^$var [^=]*$/$var $new_val/" "$1" | grep $var 

}

replace test.conf setting1 value1new 
replace test.conf setting2 value2new  
replace test.conf setting3 value3new  
replace test.conf setting4 value4new

Использование :

bash replace.sh

Вывод:

setting1 value1new
setting2 = value2new
setting3 = value3new
setting4 = value4new
0
28.01.2020, 00:55
sed -n "s/^$var[ =].*/$var = $new_value/p" "$file"

Достаточно поставить после переменной либо пробел, либо знак равенства, тогда одна замена подходит всем.

При использовании опции -n и p после замены вам не нужен grep. sed уже нашел нужную строку.

0
28.01.2020, 00:55

Теги

Похожие вопросы