0

如何将这些行与 UNIX 匹配grep

call($variable, 'tiki-index.php');
call('string123', 'tiki-index.php');
call(13, 'tiki-index.php');

我试过

user@host:~$ grep -e "smarty->assign(*, 'tiki-index.php');" .

但该命令与上述都不匹配。

4

3 回答 3

1

使用 -R 使搜索递归。如果您不希望搜索是递归的,请在 * 而不是 上进行搜索。

您需要将您的正则表达式更改为:

"call(.*, 'tiki-index.php');"

或者,聪明地:

"smarty\->assign(.*, 'tiki-index.php');"

有关更多信息,请参阅有关正则表达式的文档。

于 2013-08-19T05:22:21.817 回答
1

我有以下文件

 cat x.txt 
call($variable, 'tiki-index.php');
call('string123', 'tiki-index.php');
call(13, 'tiki-index.php');
call(sdfadf..df.d.foo);
small(12, 'tiki-index.php');

我的 grep 返回以下,您可以根据需要将其设为具体或一般

grep -e "call.*\'tiki-index.php\');" x.txt 
call($variable, 'tiki-index.php');
call('string123', 'tiki-index.php');
call(13, 'tiki-index.php');
于 2013-08-19T05:23:41.190 回答
1

您的模式grep -e "smarty->assign(*, 'tiki-index.php');"将匹配以下内容:

smarty->assign(, 'tiki-index.php');
smarty->assign((, 'tiki-index.php');
smarty->assign(((, 'tiki-index.php');
...

(即*应用于(。)

您想指定任何字符,即.然后匹配*它的实例。采用:

grep -e "smarty->assign(.*, 'tiki-index.php');"

反而。

于 2013-08-19T05:38:29.920 回答