Редактирование файла свойств Java с Bash

Необходимо выйти $ в $log в Вашем первом сценарии:

#!/bin/bash
com="GREP_COLOR=\"1;36\" egrep --color=always  '[^a-zA-Z0-9]' \$log |less -R"
log="/var/log/syslog"
eval $com

Править:

Нет действительно никакой потребности использовать eval в данном случае так предложение альтернативного и более безопасного пути как ДМИТРИЙ сделало определенно предпочтен. С другой стороны, в то время как ошибка дизайна состояла в том, чтобы использовать eval во-первых, ошибка кодирования, которую я исправил, не состояла в том, чтобы заключить в кавычки $log. В то время как eval определенно имеет выровненные по ширине негативные отзывы в прессе из-за всех уязвимостей, связанных с ним, это - тем не менее, очень мощная инструкция, которую стоит знать. Тщательно записанный evals может избежать злонамеренного или неожиданного выполнения кода.

2
09.04.2014, 01:48
3 ответа
[1128047] Используя опцию -i [1128474]sed[1128475] (которая редактируется на месте). Оговорка - символ, используемый для разграничения команды подстановки, не должен появляться в строке NEW. В примере для разделения используется ':' вместо '/' ([1128476]s:old_string:new_string:[1128477])

5
27.01.2020, 21:51
[1128049]Решение с использованием [1128478]awk[1128479]:

Тогда вы можете сохранить его в новом конфиговом файле:

awk -F'=" '$1 ~ /^\s* file. input\s*$/{$2="= /new/name"}{print > "new_config"}' config

2
27.01.2020, 21:51

Tenga en cuenta que si necesita esto en un script para trabajar multiplataforma (para trabajar también en MacOSX )entonces necesita usar el indicador completo -i, proporcionando una extensión de archivo de copia de seguridad:

NEW=/new/thing
sed -i.backup 's|\s*file.input\s*=.*$|file.input = '${NEW}'|' filename

## Then you can check exit code and remove the backup file if all is well
## rm filename.backup

De lo contrario, en MacOSX obtendrá un error similar a "caracteres adicionales al final del comando".

1
27.01.2020, 21:51

Теги

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