首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将不同的值(包括存储在变量中的空格分隔字符串)传递给grep命令

如何将不同的值(包括存储在变量中的空格分隔字符串)传递给grep命令
EN

Stack Overflow用户
提问于 2018-12-18 13:42:38
回答 1查看 52关注 0票数 2

我在一个变量中存储了一个字符串,如下所示

代码语言:javascript
复制
errors="ORA-01000:|ORA-03113:|ORA-01555|ORA-19815:|shutdown|ORA-27603"

当我将它传递给grep命令时,效果很好,如下所示

代码语言:javascript
复制
more filename.txt |grep -E $errors | awk '{print $1 $2}' >> temp.txt

但是,一旦我在这个“errors”变量中包含了一个字符串,例如“找到的表”,如下所示

代码语言:javascript
复制
errors="ORA-01000:|ORA-03113:|ORA-01555|ORA-19815:|shutdown|ORA-27603|table found"

上面提到的grep命令不起作用,因此会出现错误。

代码语言:javascript
复制
grep: **found**: No such file or directory

当空格分隔选项被作为"OR“选项传递给$error时,我有点被困住了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-18 14:36:12

只需用双引号将变量括起来。

代码语言:javascript
复制
more filename.txt | grep -E "$errors"

如果你有,比如说

代码语言:javascript
复制
errors="2:|a-3|table found"

命令

代码语言:javascript
复制
more filename.txt | grep -E $errors

就像跑步一样

代码语言:javascript
复制
more filename.txt | grep -E "2:|a-3|table" found

由于shell将$errors替换为其值2:|a-3|table found,然后再次将行拆分为单词,这将是(仅用于grep命令):

  1. grep
  2. -E
  3. 2:|a-3|table
  4. found

因此,使用选项-E、模式2:|a-3|table和文件found执行2:|a-3|table。添加到该命令中的filename.txt的内容将被忽略。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53834372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档