2016-12-22 6 views
0

Я хочу обновить значение (unix timestamp) переменной с именем $ buildDate в моем файле конфигурации.Как заменить текст в строке словами с помощью sed?

Эта строка выглядит

// .... 
$buildDate='1482327565'; 
// .... 

The official documentation говорит:

# заменить "Foo" с "бар" только для строк, которые содержат "БАЗ"

SED «/ Baz/s/foo/bar/g '

Я попытался использовать вот так:

Сед -r -e "/ buildDate/с/[0-9] {10}/0000000000/г" config.php

Но он не работает. Я получаю сообщение «*** запрещенный путь:/buildDate/s/[0-9] {10}/0000000000/g" вместо этого.

ОБНОВЛЕНИЕ: Решено. Это из-за моих прав без прав root.

+0

Я заменил '-e' на' -i', и он работал, как ожидалось. –

+0

'-e' в GNU sed означает «добавить скрипт к командам, которые будут выполняться», поэтому токен после '-e' - это путь к файлу. Удалите '-e'. –

+0

@AvihooMamka такая же ошибка –

ответ

0

Попробуйте это:

sed '/buildDate/{s/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/0000000000/g}' config.php 
+0

Как '/ pattern/s/old/new /' отличается от '/ pattern/{s/old/new /}'? Я не думаю, что это так. –

1

Вот решение Awk:

#!/usr/bin/awk -f 
BEGIN { 
    FS = "=" 
} 
$1 == "$buildDate" { 
    $2 = "0000000000" 
} 
1 
0

Alex- Не могли бы вы, пожалуйста, попробуйте следующее и дайте мне знать, если это помогает.

sed "/buildDate/s/[0-9]\{10\}/0000000000/g" config.php 

Выше работал для меня успешно, когда я тестировал его в среде BASH.

Смежные вопросы