在带有条件的 ksh 脚本中使用 sed
我正在使用 sed 命令来替换文本文件中的一些单词。该命令嵌入在 ksh 脚本中。 我想达到的是,并非每次 sed 的每个替换规则都会触发,只有在满足某些条件的情况下。例如,取决于 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
I'm using a sed command for replacing some words in text files. This command is embedded in a ksh script.
I would like to reach that not everytime will every replacement rule of sed fire, only if some conditions are filled. E.g. depending on a value of a shell variable.
In other words I would like to write this script without the if statement, I would rather include the conditional expression inside the sed. Is it possible?
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我想到的唯一解决方案是将 sed 命令存储在变量中,例如
但这仍然不是您想要的解决方案。
The only solution that pops into my mind is to store the
sed
command in a variable, likeBut it still not the solution you want.
你不能用 sed 来做到这一点,但可以用 awk 来做到。如果您想尝试,我建议您看一下:
http://www.grymoire。 com/Unix/Awk.html
You can't do it with sed, but with awk. If you like to try, I suggest you have a look at this:
http://www.grymoire.com/Unix/Awk.html