2016-01-07 28 views
-1

我必须用以下方法在ksh脚本中使用grep命令。 我有一个壳可变$string这将有每次随机串参数,我想使用正则表达式来发现它部分匹配“*”在shell变量中使用通配符字符的grep

我曾尝试:

  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是随处可见它应该匹配..generally grep的将这样做,但它的不在这里提取。

+1

您应该[编辑]您的问题向我们展示您的输入样本,'$ string'变量和预期输出。 –

+0

我已添加备注 – user1990571

+0

如果您的字符串是'AAA',那么'grep“$ string”file.txt'应该返回所有包含'AAA'的行。您应该也可以使用'-F'开关来匹配固定的字符串,但它应该没有。向我们展示一些输入和期望的输出,以便我们可以重现问题。 –

回答

1

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

+0

笔记: 我有$ string =“AAA”的输入,输出应该匹配1.AAA或2.AAA 如果AAA找到它应该匹配的任何地方..通常grep会这样做,但它不会抓取这里 – user1990571

1

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

-F,--fixed串 解释图案作为固定的字符串的列表,由换行分隔,其中的任何一个是匹配。

下面的例子应该与文件“$字符串”的所有发生。

fgrep "$string" file.txt