我有一个字符串存储在
之类的变量中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="ORA-01000:|ORA-03113:|ORA-01555|ORA-19815:|shutdown|ORA-27603|table found"
上述grep命令不起作用,并显示错误消息
grep: **found**: No such file or directory
当将空格分隔的选项作为“或”选项传递给$ error时,我有点难以处理
答案 0 :(得分:1)
只需将变量用双引号引起来
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
因为外壳程序用其值$errors
替换了2:|a-3|table found
,然后再次将行拆分为单词,这将是(仅对于grep命令):
grep
-E
2:|a-3|table
found
因此使用选项grep
,模式-E
和文件2:|a-3|table
执行found
。附加传递到该命令的filename.txt
的内容将被忽略。