我正在使用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
答案 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。如果你想尝试,我建议你看看这个: