Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
svn日志在查找特定单词的行之间检索_Svn_Sed_Awk_Grep - Fatal编程技术网

svn日志在查找特定单词的行之间检索

svn日志在查找特定单词的行之间检索,svn,sed,awk,grep,Svn,Sed,Awk,Grep,我想从SVN日志中提取行间的所有文本。如果是sed、awk或grep,则更好 示例:svn.log ------------------------------------------------------------------------ r1075 | popad | 2011-12-02 14:28:20 +0200 (Fri, 02 Dec 2011) | 1 line Changed paths: M /trunk/apps/frontend/modules/mail/tem

我想从SVN日志中提取行间的所有文本。如果是sed、awk或grep,则更好

示例:svn.log

------------------------------------------------------------------------
r1075 | popad | 2011-12-02 14:28:20 +0200 (Fri, 02 Dec 2011) | 1 line
Changed paths:
   M /trunk/apps/frontend/modules/mail/templates/candidateSearchAgentSuccess.php
   M /trunk/apps/test.php

Ticket #1000: removing ads from emails
------------------------------------------------------------------------
r1074 | coman | 2011-11-30 10:51:29 +0200 (Wed, 30 Nov 2011) | 3 lines
Changed paths:
M /trunk/apps/frontend/i18n/messages.de.xml
M /trunk/apps/frontend/i18n/messages.en.xml
M /trunk/apps/frontend/i18n/messages.ro.xml

Ticket #1089: translation update: send to friend form
http://example.com/projects/147/tickets/1089
Solved HU translation update


------------------------------------------------------------------------
我想搜索票证#1000并检索行之间的整个区块

------------------------------------------------------------------------
r1075 | popad | 2011-12-02 14:28:20 +0200 (Fri, 02 Dec 2011) | 1 line
Changed paths:
   M /trunk/apps/frontend/saSuccess.php
   M /trunk/apps/frontend/saAddSuccess.php

Ticket #1000: removing ads from emails
------------------------------------------------------------------------

提前感谢。

我建议使用svn日志的xml输出,并从xml文件中提取信息。可能更简单

svn log --xml ...

我建议使用svn日志的xml输出,并从xml文件中提取信息。可能更简单

svn log --xml ...

有趣的运动,所以我试了一下

% awk ' 
{
    lines = lines "\n" $0
}

/Ticket #1000/ {
    found = 1
}

/^-+$/ {
    if (found) {
        print lines
    }
    lines = $0
    found = 0
}
' svn.log
------------------------------------------------------------------------
r1075 | popad | 2011-12-02 14:28:20 +0200 (Fri, 02 Dec 2011) | 1 line
Changed paths:
   M /trunk/apps/frontend/modules/mail/templates/candidateSearchAgentSuccess.php
   M /trunk/apps/test.php

Ticket #1000: removing ads from emails
------------------------------------------------------------------------
我认为这是不言自明的,但如果答案不是这样的话,我会更新答案

即使当多个提交包含搜索字符串时,这种方法也有效

生成搜索字符串变量留作练习

测试使用:

% awk --version
awk version 20070501

我宁愿避免一句俏皮话。如果你喜欢这类事情,那么在语句之间就需要分号。

有趣的练习,所以我试了一下

% awk ' 
{
    lines = lines "\n" $0
}

/Ticket #1000/ {
    found = 1
}

/^-+$/ {
    if (found) {
        print lines
    }
    lines = $0
    found = 0
}
' svn.log
------------------------------------------------------------------------
r1075 | popad | 2011-12-02 14:28:20 +0200 (Fri, 02 Dec 2011) | 1 line
Changed paths:
   M /trunk/apps/frontend/modules/mail/templates/candidateSearchAgentSuccess.php
   M /trunk/apps/test.php

Ticket #1000: removing ads from emails
------------------------------------------------------------------------
我认为这是不言自明的,但如果答案不是这样的话,我会更新答案

即使当多个提交包含搜索字符串时,这种方法也有效

生成搜索字符串变量留作练习

测试使用:

% awk --version
awk version 20070501

我宁愿避免一句俏皮话。如果您喜欢这类内容,那么在语句之间需要分号。

此awk oneliner为您提供所需的输出:

awk -vRS='-+\n' '/Ticket #1000/' svn.log
测试

kent$  awk -vRS='-+\n' '/Ticket #1000/' svn.log 

r1075 | popad | 2011-12-02 14:28:20 +0200 (Fri, 02 Dec 2011) | 1 line
Changed paths:
   M /trunk/apps/frontend/modules/mail/templates/candidateSearchAgentSuccess.php
   M /trunk/apps/test.php

Ticket #1000: removing ads from emails

您已经看到行分隔符(----)不在输出中。如果您确实需要,可以轻松添加它。

此awk oneliner为您提供所需的输出:

awk -vRS='-+\n' '/Ticket #1000/' svn.log
测试

kent$  awk -vRS='-+\n' '/Ticket #1000/' svn.log 

r1075 | popad | 2011-12-02 14:28:20 +0200 (Fri, 02 Dec 2011) | 1 line
Changed paths:
   M /trunk/apps/frontend/modules/mail/templates/candidateSearchAgentSuccess.php
   M /trunk/apps/test.php

Ticket #1000: removing ads from emails

您已经看到行分隔符(----)不在输出中。如果您确实需要,可以轻松添加它。

这可能适合您:

 sed '/^-\+$/{h;:a;$d;N;/-\+$/!ba;/Ticket #1000:/p;g;ba};d' svn.log

这可能适合您:

 sed '/^-\+$/{h;:a;$d;N;/-\+$/!ba;/Ticket #1000:/p;g;ba};d' svn.log

+从我这里得到1。这显然是最简洁的方法,也是最容易理解的方法。但是,我的打印行分隔符;)@danielpopa:“谢谢。这很有帮助!”这是最好的表达方式“正如你们看到我的得分,我是一个初学者。”。因此,您也可以通过单击我的问题上的左上箭头来帮助我;)@丹尼尔波帕:如果你把鼠标悬停在那个小箭头上,你会看到上面写着“这个问题表明了研究的努力”。恐怕我不能点击它。我的+1。这显然是最简洁的方法,也是最容易理解的方法。但是,我的打印行分隔符;)@danielpopa:“谢谢。这很有帮助!”这是最好的表达方式“正如你们看到我的得分,我是一个初学者。”。因此,您也可以通过单击我的问题上的左上箭头来帮助我;)@丹尼尔波帕:如果你把鼠标悬停在那个小箭头上,你会看到上面写着“这个问题表明了研究的努力”。恐怕我不能点击它。这是所有参数不在同一行的原因。它给了我语法错误。太好了。效果很好:awk v3.1.6。所有参数不在同一行是有原因的。它给了我语法错误。太好了。非常好用:awkv3.1.6。