如何使用sed命令检测指定单词是否存在,不存在则追加指定字符串
sed条件追加字符串实现
首先给出基础sed替换示例:
- 把字符串里所有逗号替换为
and的命令如下:
markers=$(echo generic,daily,nightly | sed -e "s/,/ and /g")
- 执行
echo $markers可以得到输出:
generic and daily and nightly
需求解答
针对「如果$markers里没有单词nightly,就在字符串末尾追加and not nightly」的需求,完全可以用sed实现,不需要额外嵌套shell条件判断。
具体实现命令
直接对变量内容做sed处理即可:
markers=$(echo "$markers" | sed '/nightly/!s/$/ and not nightly/')
逻辑说明
/nightly/!是sed的地址匹配规则:选中所有不包含nightly的行- 后面的
s/$/ and not nightly/是替换操作:对选中的行,在末尾($代表行尾位置)拼接指定字符串 - 如果行里已经有
nightly,就不会触发替换操作,原内容保持不变。
测试效果
- 当
$markers值为generic and daily(不含nightly):处理后结果为generic and daily and not nightly - 当
$markers值为generic and daily and nightly(已含nightly):处理后内容和原值完全一致,不会追加冗余内容。
内容的提问来源于stack exchange,提问作者shapale
相关产品推荐
相关产品推荐

