在 grep Consumer 中使用多个表达式

在 grep Consumer 中使用多个表达式

我有这些 bash 函数

filter_history(){
  grep -v '^cd[^ ]|^ls[^ ]'
}

get_clean_bash_history(){
  cat "$HOME/.bash_history" | filter_history
}

我试图获取 bash 历史记录,但过滤掉像cdand这样的无聊命令ls...但是我的 grep 表达式不起作用,有人知道为什么吗?

答案1

看起来 -E 标志对于与 grep 一起使用是必要的,这似乎有效:

grep -v -E '^cd +|^ls +'

但如果这还不够或在边缘情况下失败,请纠正我

答案2

你只需要逃避or

function get_clean_bash_history(){
    grep -v '^cd \|^ls ' "$HOME/.bash_history"
}

相关内容