我怎么可以grep变量复杂的字符串? [英] How can I grep complex strings in variables?

查看:144
本文介绍了我怎么可以grep变量复杂的字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想对grep在一个更大的字符串,一小串。这两个字符串被存储为变量,这里是一个code例如:

 #!/斌/庆典long_str = $(MAN MAN)
shrt_str =指南如果grep的-q $ shrt_str $ long_str;然后
        回声找到了!
科幻

我不认为变量扩展工作,我希望它的方式。我曾尝试 [] [[]] ,也引用变量和输出管道,以的/ dev / null的但无论我做什么,它不会工作。

有没有人有什么想法?


解决方案

 回声$ long_str| grep的-q$ shrt_str
如果[$? -eq 0];然后
  回声发现
科幻

 回声$ long_str|的grep -q$ shrt_str与&&放大器;回声发现||回声找不到

但因为你正在使用bash shell中,然后利用壳内部。不需要调用外部命令

  shrt_str =指南
案$ long_str中
   *$ shrt_str*)回声找到;;
   *)回声未找到;;
ESAC

I am trying to grep for a small string in a much larger string. Both strings are being stored as variables and here is a code example:

#!/bin/bash

long_str=$(man man)
shrt_str="guide"

if grep -q $shrt_str $long_str ; then
        echo "Found it!"
fi

I don't think variable expansion is working the way I expect it to. I have tried [ ] and [[ ]], also quoting the variables and piping the output to /dev/null but no matter what I do it won't work.

Does anyone have any ideas?

解决方案

echo "$long_str" | grep -q "$shrt_str"
if [ $? -eq 0 ];then
  echo "found"
fi

or

echo "$long_str" | grep  -q  "$shrt_str"  && echo "found" || echo "not found"

But since you are using bash shell, then use shell internals. No need to call external commands

shrt_str="guide"
case "$long_str" in 
   *"$shrt_str"* ) echo "Found";;
   * ) echo "Not found";;
esac

这篇关于我怎么可以grep变量复杂的字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆