文本关键字查找问题

举例 文本 test.log内容如下


test server;

Test server
;

error lock test server
;

error test test server error;
.
.
.
.

以上是举例文本信息

关键字:test error...等等 不区分大小写.

目的:
找到关键字 和 关键字之后的第一个分号之间的东西 中间其它的关键字 忽略 ,在前后加上标签 关键字和分号可能不在同一行

结果:
[LOG]
test server;
[/LOG]
[LOG]
Test server
;
[/LOG]
[LOG]
error lock test server
;
[/LOG]
[LOG]
error test test server error;
[/LOG]
.
.
.
.

作者: sunsansheng_cu   发布时间: 2011-06-03

回复 sunsansheng_cu
  1. sed -rn ':a;N;${s/([Tt]est|[Ee]rror)[^;]*;/\[LOG\]\n&\n\[\/LOG\]/g;p};ba' file
复制代码

作者: where27   发布时间: 2011-06-03

回复 sunsansheng_cu
  1. cat keyword.txt
  2. test
  3. error
  4. ....



  5. awk  'BEGIN{IGNORECASE=1}NR==FNR{a[$1]}NR>FNR{for(i=1;i<=NF;i++){for(j in a) if($i~a[j]) {$i=x==0?"[LOG]\n"$i:$i;x=1};if($i~/;/){x++;$i=x==2?$i"\n[/LOG]":$i;x=0}};print}' keyword.txt file
  6. [LOG]
  7. test server;
  8. [/LOG]

  9. [LOG]
  10. Test server
  11. ;
  12. [/LOG]

  13. [LOG]
  14. error lock test server
  15. ;
  16. [/LOG]

  17. [LOG]
  18. error test test server error;
  19. [/LOG]
复制代码

作者: yinyuemi   发布时间: 2011-06-03

本帖最后由 sunsansheng_cu 于 2011-06-03 10:51 编辑


QUOTE:
回复  sunsansheng_cu
yinyuemi 发表于 2011-06-03 10:05




   

很奇怪的一个问题:
如果文本是这样

test server;

+---------------------------------+
Test server
;

error lock test server
;

error test test server error;
.


则输出就是:
[LOG]
test server;
[/LOG]
[LOG]
+----------------------------------+
Test server
;
[/LOG]
[LOG]
error lock test server
;
[/LOG]
[LOG]
error test test server error;
[/LOG]
.
.
.
.

标签会把+-------------------+加入进去

或者这样的
Test server
;error lock test server
;

输出时也有问题

作者: sunsansheng_cu   发布时间: 2011-06-03