0

我需要 CSH/TCSH 脚本中的字符串处理方面的帮助。我知道基本处理,但需要帮助了解我们如何处理高级字符串操作要求。

我有一个日志文件,其格式如下:

[开始一个]

A的日志信息

[END_A]

[START_B]

B的日志信息

[END_B]

[START_C]

C的日志信息

[END_C]

我的要求是选择性地提取开始和结束标记之间的内容并将它们存储在一个文件中。例如 START_A 和 END_A 之间的内容将存储在 A.log

4

3 回答 3

1

这应该适合你:

awk -F'_' '/\[START_.\]/{s=1;gsub(/]/,"",$2);f=$2".txt";next;}/\[END_.\]/{s=0} s{print $0 > f}' yourLog

测试:

kent$  cat test
    [START_A]

    log info of A

    [END_A]

    [START_B]

    log info of B

    [END_B]

    [START_C]

    log info of C

    [END_C]


kent$  awk -F'_' '/\[START_.\]/{s=1;gsub(/]/,"",$2);f=$2".txt";next;}/\[END_.\]/{s=0} s{print $0 > f}' test

kent$  head *.txt
==> A.txt <==

    log info of A


==> B.txt <==

    log info of B


==> C.txt <==

    log info of C
于 2012-04-13T07:17:07.773 回答
0

awk 一次可以做 1 个:

cat log | awk '/[START_A]/,/[END_A]/'
于 2012-04-13T06:54:57.427 回答
0

这可能对您有用:

sed '/.*\[START_\([^]]*\)\].*/s||/\\[START_\1\\]/,/\\[END_\1\\]/w \1.log|p;d' file |
sed -nf - file
于 2012-04-13T07:47:04.960 回答