2016-07-08 2 views
0

У меня есть этот файл httpd.conf, который я хочу найти EnableSendfile, а не строки, содержащие эту строку, но строка начинается с «#» (не прокомментированные строки), если found Я хочу сбросить его значение до выключения.найти и заменить в файле или строке в bash

Я попытался придумать это. (Я новичок в языке bash) , но он не работает.

Я хочу использовать переменные в моей команде поиска и замены, так как я собираюсь сделать это позже с элементами массива, чтобы перебирать ключи и их значения, поэтому мне нужно использовать переменные вместо простой строки.

Благодарим за помощь, заблаговременно!

#!/bin/bash 
SEARCH="EnableSendfile" 
FILEPATH="/root/scripts/httpd.conf" 
REPLACE="off" 

if grep -Fq $SEARCH $FILEPATH 
then 
    line_string=`sed -n '/^EnableSendfile/p' $FILEPATH` 
    result_string="${line_string/(^[^#]\w*)(?:\s(\w+))?$/$REPLACE}" 
    echo $result_string 
else 
    echo "not found" 
fi 
# 
# EnableMMAP and EnableSendfile: On systems that support it, 
# memory-mapping or the sendfile syscall may be used to deliver 
# files. This usually improves server performance, but must 
# be turned off when serving from networked-mounted 
# filesystems or if support for these functions is otherwise 
# broken on your system. 
# Defaults if commented: EnableMMAP On, EnableSendfile Off 
# 
#EnableMMAP off 
EnableSendfile on 
#EnableSendfile on 

# Supplemental configuration 
# 
# Load config files in the "/etc/httpd/conf.d" directory, if any. 
IncludeOptional conf.d/*.conf 

ответ

0

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

sed 's/^EnableSendfile on/EnableSendfile off/' 

^ специальный символ совпадает в начале строки, поэтому команда не изменит строки, начинающиеся с #.

+0

hhow я могу использовать переменные с sed, sinc Я собираюсь сделать это позже с элементами массива, чтобы перебрать ключи и их значения, поэтому мне нужно использовать переменные вместо простых строк – Vagho

+0

Если переменные никогда не содержат специальных символов , вы можете использовать их в двойных кавычках: '' s/^ $ keyword on/$ keyword off/"'. В противном случае вам потребуется более сложное решение. – choroba

+0

ok .i смог это сделать, но, по-видимому, он не сохраняет его, просто показывает файл на экране, как его сохранить или заменить исходный файл на него? – Vagho

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