Использование sed в скрипте ksh с условием - PullRequest
1 голос
/ 04 июля 2011

Я использую команду sed для замены некоторых слов в текстовых файлах. Эта команда встроена в скрипт ksh. Я хотел бы достичь того, что не каждый раз будет каждое заменяющее правило седельного огня, только если будут выполнены некоторые условия. Например. в зависимости от значения переменной оболочки.

Другими словами, я хотел бы написать этот скрипт без оператора if, я бы предпочел включить условное выражение внутри sed. Возможно ли это?

REPLACE_A=TRUE

if [ "$REPLACE_A" = "TRUE" ]
then
    cat myfile \
    | sed 's/A/B/g;
          's/C/D/g;
          's/E/F/g;'
else
    cat myfile \
    | sed 's/C/D/g;
          's/E/F/g;'    
fi

Ответы [ 2 ]

2 голосов
/ 04 июля 2011

Единственное решение, которое приходит мне в голову, - это сохранить команду sed в переменной, например

# in your script
SEDCMD=""
# ...
SEDCMD="s/A/B/g;"
# later 
SEDCMD="${SEDCMD}s/C/D/g;"
# ...
# finally
sed "$SEDCMD" FILE

Но это все же не то решение, которое вам нужно.

0 голосов
/ 04 июля 2011

Вы не можете сделать это с помощью sed, но с помощью awk. Если вы хотите попробовать, я предлагаю вам взглянуть на это:

http://www.grymoire.com/Unix/Awk.html

...