在条件的ksh脚本中使用sed

时间:2011-07-04 13:18:13

标签: shell sed ksh

我正在使用sed命令替换文本文件中的某些单词。此命令嵌入在ksh脚本中。 我想达到这个目的,并不是每次都会在每次更换火灾的规则时,只有在满足某些条件的情况下。例如。取决于shell变量的值。

换句话说,我想在没有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 个答案:

答案 0 :(得分:2)

我想到的唯一解决方案是将sed命令存储在变量中,例如

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

但它仍然不是你想要的解决方案。

答案 1 :(得分:0)

你不能用sed做,但用awk。如果你想尝试,我建议你看看这个:

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