【问题标题】:grep with wild card character in shell variableshell变量中带有通配符的grep
【发布时间】:2016-01-07 09:34:17
【问题描述】:

我必须通过以下方式在 ksh 脚本中使用 grep 命令。 我有一个shell变量$string,每次都会有随机字符串参数,我想使用正则表达式“*”找到它的部分匹配

我试过了:

  1. grep "$string" file.txt => 未获取部分内容
  2. grep "$string*" file.txt => 结果在字符串末尾出现 0 次或多次
  3. 现在我想使用grep "*$string*" file.txt ..我已经逃脱了"\*$string*""*\$string*" 对我没有帮助吗?

如何使用grep "*$string*" file.txt?还是其他命令?

我有$string="AAA" 的输入,输出应该匹配

  1. AAA,或
  2. <any number of characters>AAA<any number of characters>

如果 AAA 在任何应该匹配的地方找到..通常 grep 会这样做,但它不会在此处获取。

【问题讨论】:

  • 您应该edit 向我们展示您的输入样本、$string 变量和预期输出。
  • 如果你的字符串是AAA,那么grep "$string" file.txt应该返回所有包含AAA的行。您可能也应该使用-F 开关来匹配固定字符串,但它应该可以在没有的情况下工作。向我们展示一些输入和所需的输出,以便我们重现问题。

标签: shell grep ksh


【解决方案1】:

虽然您的问题尚不清楚,但我怀疑您正在寻找固定字符串的 -F 标志。这确保没有正则表达式元字符。

【讨论】:

  • 注意:我有 $string="AAA" 的输入并且输出应该匹配 1.AAA 或 2.AAA 如果在任何地方找到它应该匹配的 AAA ..通常 grep 会这样做,但它不是到这里来
【解决方案2】:

搜索字符串最好使用 fgrep 或等效的 grep -F

-F, --固定字符串 将 PATTERN 解释为固定字符串的列表,由换行符分隔,其中任何一个都将被匹配。

以下示例应匹配文件中所有出现的“$string”。

fgrep "$string" file.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 2018-09-07
    • 2013-03-03
    • 1970-01-01
    相关资源
    最近更新 更多