将变量传递给grep命令

3

我想在Linux bash脚本中的grep命令中传递一个变量。变量是来自互联网的文本文件,我想在其中查找一些单词。

我已经尝试了以下命令:

  1. cat "$var" | grep -Po '(?<=\d[a-zA-Z]).*\..*(?=[a-zA-Z]\d)'
  2. echo "$var" | grep -Po '(?<=\d[a-zA-Z]).*\..*(?=[a-zA-Z]\d)'
  3. grep -Po '(?<=\d[a-zA-Z]).*\..*(?=[a-zA-Z]\d)' <<< "$var"

但我没有得到正确的结果。 我该怎么做?

这是我的bash:

#!/bin/sh    
urltext=$(curl -s https://example.com)
string=$(grep -Po '(?<=\d[a-zA-Z]).*\..*(?=[a-zA-Z]\d)' "$urltext" | tr '.' '\n' )
cat $string

编辑你的问题,包括类似 var="我的文本字符串"var=aFileName.txt 的内容。你明白 echocat 之间的区别吗?祝你好运。 - undefined
var的值是多少,你希望grep如何使用它的值(即,期望的输出是什么)? - undefined
1个回答

0
变量中应该包含什么内容?
是一个文件吗?
grep <options> <expression> "$var"

这是一个字符串吗?

echo "$var"|grep <options> <expression>
grep <options> <expression> <(echo "$var")

注意:如果$var中有多行内容,请尝试使用-e选项。

使用echo命令将字符串传递进来后,仍然会将信息输出到控制台。有没有一种方法可以在没有这个输出的情况下完成这个操作? - undefined
是的,你可以在命令后面添加>/dev/null来将标准输出重定向到空设备。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接