svn日志在查找特定单词的行之间检索
我想从SVN日志中提取行间的所有文本。如果是sed、awk或grep,则更好 示例:svn.logsvn日志在查找特定单词的行之间检索,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
------------------------------------------------------------------------
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。