将file.txt拆分为带有条件的两个文件

时间:2015-12-15 09:40:14

标签: linux shell

如何将给定文件拆分为两个不同的文件结果代码和警告代码。下面给出的是单个文本文件,我想将其拆分为两个文件,因为我有更多的文件处于这种情况下要拆分。

结果代码:

0 - SYS_OK - "Ok"

1 - SYS_ERROR_E - "System Error"

1001 - MVE_SYS_E - "MTE System Error"

1002 - MVE_COMMAND_SYNTAX_ERROR_E - "Command Syntax is wrong"

警告代码:

0 - SYS_WARN_W - "System Warning"

100001 - MVE_SYS_W - "MVE System Warning"

200001 - SLEA_SYS_W - "SLEA System Warning"

200002 - SLEA_INCOMPLETE_SCRIPTED_OVERRIDE_COMMAND_W - "One or more of the entered scripted override commands has missing mandatory parameters"

300001 - L1_SYS_W - "L1 System Warning"

2 个答案:

答案 0 :(得分:1)

嗯,乍一看,区别似乎是“警告”都包含字符序列_W -而任何不包含“结果”的字符序列。你注意到了吗?

awk '/_W -/{print >"warnings";next}{print >"results"}'

答案 1 :(得分:0)

这是一个python解决方案:  我假设您有警告代码列表。

import re
warnings = open(r'warning-codes.txt');
warn_codes =[]
for line in warnings:
    m = re.search(r'(\d+) .*',line);
    if(m):
        warn_codes.append(m.groups(1));

ow = open('output-warnings.txt','w')
ors = open('output-results.txt','w')

log_file = open(r'log.txt');
for line in log_file:
    m = re.search(r'(\d+) .*',line);
    if(m and (m.groups(1) in warn_codes)):
        ow.write(line+'\n');
    elif(m):
        ors.write(line+'\n');
    else:
        print("none");

ow.close()
ors.close()