我在一个变量中存储了一个字符串,如下所示
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但是,一旦我在这个“errors”变量中包含了一个字符串,例如“找到的表”,如下所示
errors="ORA-01000:|ORA-03113:|ORA-01555|ORA-19815:|shutdown|ORA-27603|table found"上面提到的grep命令不起作用,因此会出现错误。
grep: **found**: No such file or directory当空格分隔选项被作为"OR“选项传递给$error时,我有点被困住了。
发布于 2018-12-18 14:36:12
只需用双引号将变量括起来。
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-E2:|a-3|tablefound因此,使用选项-E、模式2:|a-3|table和文件found执行2:|a-3|table。添加到该命令中的filename.txt的内容将被忽略。
https://stackoverflow.com/questions/53834372
复制相似问题