我有一个日志文件,准确地说它是一个类似于日志文件的自定义应用程序报告。我想创建一个bash脚本来管理这个日志,并在这个脚本启动时从这个单个文件生成“n”个文件。 目标是在“字符串”出现时“分割”此日志文件,并在此字符串后面捕获该单词,并忽略该行中的所有其余内容,以将此单词用作文件名的一部分。
我看到一些基本脚本将每个单词或字符串出现的日志文件分开,但它没有任何机会在其他方法中保存或操作“内容”,它只是一个“分割器”并保存文件名1.txt ,2.txt等。
为了有一个上下文,我们讨论的是生成一个“计算”软件许可证的报告,该报告如下:
blabla - Copyright (c) 1989-2016 Some Cool software without decent report. All Rights Reserved.
Cool Software License status on Wed 10/12/2016 03:02
License server status: port@serverhostname
License file(s) on serverhostname: C:\Path\To\File\lic.txt:
serverhostname: license server v0.7b
Users of service1: (Total of 182 licenses issued; Total of 0 licenses in use)
Users of service2: (Total of 182 licenses issued; Total of 180 licenses in use)
"service2" v61.8, vendor: VENDORNAME
floating license
USER123 PC1234 PC1234 (v61.7) (SERVER/2501 4605), start Wed 10/12 14:56, 10 licenses
USER311 PC3331 PC3331 (v61.2) (SERVER/2501 10621), start Mon 10/10 17:55, 12 licenses
Users of service3: (Total of 182 licenses issued; Total of 0 licenses in use)
Users of another_services: (Total of 182 licenses issued; Total of 0 licenses in use)
"another_services" v61.8, vendor: ABAQUSLM
floating license
USER0021 PCNAME1 PCNAME1 (v61.4) (SERVER/2501 6852), start Wed 10/12 14:44
USER0034 PCNAME03 PCNAME03 (v61.1) (SERVER/2501 13016), start Wed 10/12 10:51
USER0123 PCNAME5 PCNAME4 (v61.4) (SERVER/2501 6852), start Wed 10/12 14:44
Users of plugin01: (Total of 30 licenses issued; Total of 0 licenses in use)
我想要做的是为每个服务/插件创建一个单独的文本文件,因此我需要“拆分”,搜索/识别字符串,或者更好的行开头:
的用户
后跟service_name,我需要将其存储在一个变量中以用作文件名的一部分。
在文本文件中,我只想报告包含USER和PC信息的字符串,跳过两条描述行重复的服务名称,以及其他一些有关服务的信息。
该文件是动态报告,因此在执行脚本,数字或服务或“Users of”行下的用户数之前,我真的不知道。此外,某些服务不能包含任何行。如果某个服务没有任何行,那么可以生成没有任何行的文本文件。
任何建议都非常受欢迎,因为我是shell脚本的新手。
干杯!
答案 0 :(得分:0)
尝试使用awk:
% awk '/^Users of/{name=$3} name{print > name}' file
% ls -1 *service*
并非所有要求都已完成,但随时可以改进,我已经做了更大的部分