我有一个字符串存储在像这样的变量中
errors="ORA-01000:|ORA-03113:|ORA-01555|ORA-19815:|shutdown|ORA-27603"
当我把它传递给像这样的grep命令时,效果很好
more filename.txt |grep -E $errors | awk '{print $1 $2}' >> temp.txt
但一旦我在这个">错误"变量中包含一个字符串,例如">table found
errors="ORA-01000:|ORA-03113:|ORA-01555|ORA-19815:|shutdown|ORA-27603|table found"
上面提到的grep命令不起作用,并给出错误
grep: **found**: No such file or directory
当空格分隔选项作为"OR"选项传递给$error 时,我有点不知所措
只需将变量用双引号括起来
more filename.txt | grep -E "$errors"
如果你有,说
errors="2:|a-3|table found"
命令
more filename.txt | grep -E $errors
就像运行
more filename.txt | grep -E "2:|a-3|table" found
由于shell将$errors
替换为其值2:|a-3|table found
,然后再次将行拆分为单词,这将是(仅适用于grep命令(:
grep
-E
2:|a-3|table
found
因此使用选项-E
、模式2:|a-3|table
和文件found
执行grep
。filename.txt
的内容将被忽略,该内容通过管道附加到该命令中。