2017-03-08 47 views
1

我正试图在只有一个(+)开头的文本文件中找到一些行。Bash脚本:如何查找以一个字符开头的行?

我的文件:

--- step31.php 2017-03-10 18:34:59.430949110 +0330 
+++ step32.php 2017-03-10 18:34:59.430949110 +0330 
@@ -1,6 +1,6 @@ 
<?php 
defined('_JEXEC') or die; 
-JLoader::register('BannersHelper', JPATH_COMPONENT . '/helpers/banners.php'); 
+JLoader::register('BannersHelper', JPATH_ADMINISTRATOR . '/components/com_banners/helpers/banners.php'); 
class BannersViewBanner extends JViewLegacy{ 
    protected $form; 
    protected $item; 
@@ -32,7 +32,7 @@ 
      JToolbarHelper::save2copy('banner.save2copy');} 
     if (empty($this->item->id)) { 
      JToolbarHelper::cancel('banner.cancel');} else { 
-   if ($this->state->params->get('save_history', 0) && $user->authorise('core.edit')) { 
+   if ($this->state->params->get('save_history', 0) && $canDo->get('core.edit')) { 
       JToolbarHelper::versions('com_banners.banner', $this->item->id);} 

所需的输出:

+JLoader::register('BannersHelper', JPATH_ADMINISTRATOR . '/components/com_banners/helpers/banners.php'); 
+   if ($this->state->params->get('save_history', 0) && $canDo->get('core.edit')) { 

我用grep '^+'但输出是:

+++ step32.php 2017-03-10 18:34:59.430949110 +0330 
+JLoader::register('BannersHelper', JPATH_ADMINISTRATOR . '/components/com_banners/helpers/banners.php'); 
+   if ($this->state->params->get('save_history', 0) && $canDo->get('core.edit')) { 
+2

假设你想选择以单加(不是两个或更多的加号)开始的行,那么'grep'^ + [^ +]'...'?除非你想要只包含一个加号的行:'grep -E'^ +([^ +] | $)'...' –

回答

1

您可以使用:

grep '^+[^+]' file 

+JLoader::register('BannersHelper', JPATH_ADMINISTRATOR . '/components/com_banners/helpers/banners.php'); 
+   if ($this->state->params->get('save_history', 0) && $canDo->get('core.edit')) { 

正则表达式^+[^+]将在起始处匹配+,之后是除+之外的任何值,从而为您提供预期输出。

相关问题