Как исправить команды SED становиться чрезвычайно медленными, когда нагрузка высокая?Linux

Ответить Пред. темаСлед. тема
Anonymous
 Как исправить команды SED становиться чрезвычайно медленными, когда нагрузка высокая?

Сообщение Anonymous »

У меня есть скрипт Bash, который принимает простой файл свойств и заменяет значения в другой файл. (Файл свойства - это просто строки свойств «foo = bar» типа) < /p>
INPUT=`cat $INPUT_FILE`
while read line; do
PROP_NAME=`echo $line | cut -f1 -d'='`
PROP_VALUE=`echo $line | cut -f2- -d'=' | sed 's/\$/\\\$/g`
time INPUT="$(echo "$INPUT" | sed "s\`${PROP_NAME}\b\`${PROP_VALUE}\`g")"
done
низкая нагрузка: < /p>
real  0m0.011s
user  0m0.002s
sys  0m0.004s

Обычно теряя 0,1 секунды - это не огромная сделка, но как файл свойств, так и входные файлы - сотни/тысячи строк длиной, и эти 0,1 секунды составляют более часа потраченного времени.
Что я могу сделать, чтобы исправить это? Нужно ли мне больше процессоров?$foo=bar
$hello=world
^hello=goodbye
< /code>
Пример ввода < /p>
This is a story about $hello. It starts at a $foo and ends in a park.

Bob said to Sally "^hello, see you soon"
< /code>
ожидаемый результат < /p>
This is a story about world. It starts at a bar and ends in a park.

Bob said to Sally "goodbye, see you soon"
< /code>
Редактировать: Я должен был ясно дал понять, что рекурсивная замена в исходном коде является предполагаемым поведением. Извините за это.
Итак, если предварительный файл содержит < /p>
$key1=foo_$key2
$key2=bar
< /code>
Затем для входного файла, содержащего < /p>
$key1
< /code>
Вывод < /p>
foo_bar


Подробнее здесь: https://stackoverflow.com/questions/795 ... ad-is-high
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»