一种命令行信息输出的方法及装置与流程

文档序号:13207554阅读:234来源:国知局
一种命令行信息输出的方法及装置与流程

本发明涉及命令行操作领域,更具体地说,涉及一种命令行信息输出的方法及装置。



背景技术:

在基于linux平台的软件研发活动中,对软件开发及测试人员来说,使用linux命令行获取信息是十分频繁的事情。但是,linux命令行中信息的输出没有统一的规范,输出的信息中通常是字段与字段之间通过空格或tab分隔,当字段很多的时候,识别某一个字段对应的输出列的内容就十分困难。

目前解决的方法通常是在内容输出之前先使用awk工具进行处理后再输出到屏幕。但是,awk工具的特点是以数字标识每一个字段,当字段很多的时候,需要通过人为数数的方法才能确定需要输出的某一个或某几个字段,十分不方便。此外,linux命令行输出的字段排列顺序可能在排版演进中发生改变,例如原来的字段输出顺序为abc,新版本中则变成adbc,再读取字段时就十分麻烦,从而给基于linux命令行的自动化测试用例维护引入了较大的不确定性,增加了软件测试代码的维护成本。

因此,如何简单地输出清晰的内容,是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于提供一种命令行信息输出的方法,以简单地输出清晰的内容。

为实现上述目的,本发明实施例提供了如下技术方案:

一种命令行信息输出的方法,包括:

根据输出命令确定目标文本,获取所述目标文本的目标字段;

判断所述目标字段中是否存在所述输出命令中的待输出字段;

若是,则利用所述目标字段获取所述待输出字段的下标列表;

根据所述下标列表从所述目标文件中获取待输出文本,将所述待输出字段与所述待输出文本保存至临时文件,其中每个待输出字段与每个待输出字段对应的待输出文本保存在所述临时文件中的同一列;

根据预设规则输出所述临时文件的每列内容。

其中,所述根据预设规则输出所述临时文件的每列内容之前,还包括:

判断所述输出命令中是否有精准匹配选项;

若是,则将所述临时文件中的目标字段删除,根据预设规则输出所述临时文件的每列内容;

若否,则继续执行所述根据预设规则输出所述临时文件的每列内容的步骤。

其中,当预设了彩色输出标志时,所述根据预设规则输出所述临时文件的每列内容之前,还包括:

根据预设颜色逐行处理所述临时文件中的内容。

其中,所述根据预设规则输出所述临时文件的每列内容之前,还包括:

根据所述临时文件中的每一列内容的最大宽度值设定每一列的宽度。

其中,所述预设规则包括:

文件内容左对齐模式或文件内容右对齐模式。

一种命令行信息输出的装置,包括:

目标字段获取模块,用于根据输出命令确定目标文本,获取所述目标文本的目标字段;

第一判断模块,用于判断所述目标字段中是否存在所述输出命令中的待输出字段;

下标列表获取模块,用于当所述目标字段中存在所述输出命令中的待输出字段时,利用所述目标字段获取所述待输出字段的下标列表;

待输出文本获取模块,用于根据所述下标列表从所述目标文件中获取待输出文本,将所述待输出字段与所述待输出文本保存至临时文件,其中每个待输出字段与每个待输出字段对应的待输出文本保存在所述临时文件中的同一列;

第一输出模块,用于根据预设规则输出所述临时文件的每列内容。

其中,还包括:

第二判断模块,用于所述根据预设规则输出所述临时文件的每列内容之前,判断所述输出命令中是否有精准匹配选项;若否,则继续调用所述第一输出模块;

第二输出模块,用于当所述输出命令中有精准匹配选项时,将所述临时文件中的目标字段删除,根据预设规则输出所述临时文件的每列内容。

其中,还包括:

颜色处理模块,用于当预设了彩色输出标志时,在所述根据预设规则输出所述临时文件的每列内容之前,根据预设颜色逐行处理所述临时文件中的内容。

其中,还包括:

宽度设定模块,用于在所述根据预设规则输出所述临时文件的每列内容之前,获取所述临时文件中的每一列内容的最大宽度值,根据所述最大宽度值设定每一列的宽度。

其中,所述预设规则包括:

文件内容左对齐模式或文件内容右对齐模式。

通过以上方案可知,本发明实施例提供的一种命令行信息输出的方法,根据输出命令确定目标文本,获取所述目标文本的目标字段;判断所述目标字段中是否存在所述输出命令中的待输出字段;若是,则利用所述目标字段获取所述待输出字段的下标列表;根据所述下标列表从所述目标文件中获取待输出文本,将所述待输出字段与所述待输出文本保存至临时文件,其中每个待输出字段与每个待输出字段对应的待输出文本保存在所述临时文件中的同一列;根据预设规则输出所述临时文件的每列内容。

本发明实施例提供的一种命令行信息输出的方法,根据用户输入的输出命令,确定用户要获取的内容所在的文本,并将文本的第一行字段提取出来,在第一行字段中找到用户想要获取的字段,并获取用户想获取的字段的下标,根据下标按列输出用户想要得到的内容。按列输出内容,也就是每个字段对应的内容均在一列,因此输出的内容十分清晰,识别度很高。同时,由于每次输出内容时,都获取目标字段的下标列表,因此可以动态的根据下标找到要输出的内容,降低了字段顺序变化时,输出内容的不确定性,降低了维护的成本。本发明实施例还公开了一种命令行信息输出的装置,同样可以实现上述技术效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例公开的一种命令信息输出的方法流程图;

图2为本发明实施例公开的一种具体的命令信息输出的方法流程图;

图3为本发明实施例公开的一种命令信息输出的方法的精确匹配模式效果图;

图4为本发明实施例公开的一种命令信息输出的方法的用户未定义彩色输出标志的输出内容效果图;

图5为本发明实施例公开的一种命令信息输出的方法的用户定义右对齐的效果图;

图6为本发明实施例公开的一种命令信息输出的装置结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种命令行信息输出的方法,以简单地输出清晰的内容。

参见图1,本发明实施例提供的一种命令行信息输出的方法,具体包括:

s101,根据输出命令确定目标文本,获取所述目标文本的目标字段;

具体地,输出命令是指用户输入的命令,通过输出命令可以知道需要输出哪个文件中的哪些字段对应的内容。首先根据输出命令确定待输出内容所在的文件,也就是目标文件;提取目标文件中的第一行字段,其中第一行字段是包括了目标文件中所有字段的目标字段。

s102,判断所述目标字段中是否存在所述输出命令中的待输出字段;

具体地,从输出命令中可以确定待输出的内容对应的字段,也就是待输出字段,判断目标字段中是否有待输出字段,即,判断目标文本中的所有字段里是否有待输出的内容对应的字段,也就是说,通过字段判断目标文件中是否有待输出的内容。若是,则执行s103,若否,则可以反馈错误的信息。

s103,利用所述目标字段获取所述待输出字段的下标列表;

目标字段中有待输出字段,那么根据目标字段确定带出字段的下标列表,下标列表可以是待输出字段在目标字段中顺序,例如目标字段为"a:b:c:d:e",待输出字段为"b:c:a",则下标列表为"2:3:1";

s104,根据所述下标列表从所述目标文件中获取待输出文本,将所述待输出字段与所述待输出文本保存至临时文件,其中每个待输出字段与每个待输出字段对应的待输出文本保存在所述临时文件中的同一列;

具体地,利用下标列表在目标文件中获取对应的待输出文本,将待输出文本和待输出字段报讯到临时文件中,其中字段与对应的文本在一列。例如,待输出字段为"b:c:a",其中b对应的文本为b1,b2,b3;c对应的文本为c1,c2,c3;a对应的文本为a1,a2,a3。则可以以下述的格式存储到临时文件。

s105,根据预设规则输出所述临时文件的每列内容。

具体地,预设规则可以是文件内容左对齐模式或文件内容右对齐模式。根据预设模式输出临时文件的内容。需要说明的是,输出内容后,要将临时文件删除。

通过以上方案可知,本发明实施例提供的一种命令行信息输出的方法,根据用户输入的输出命令,确定用户要获取的内容所在的文本,并将文本的第一行字段提取出来,在第一行字段中找到用户想要获取的字段,并获取用户想获取的字段的下标,根据下标按列输出用户想要得到的内容。按列输出内容,也就是每个字段对应的内容均在一列,因此输出的内容十分清晰,识别度很高。同时,由于每次输出内容时,都获取目标字段的下标列表,因此可以动态的根据下标找到要输出的内容,降低了字段顺序变化时,输出内容的不确定性,降低了维护的成本。

为了使输出文本支持精确匹配模式,基于上述实施例本发明实施例提供一种具体的命令行信息输出的方法,参见图2,本发明实施例具体包括:

s201,根据输出命令确定目标文本,获取所述目标文本的目标字段;

s202,判断所述目标字段中是否存在所述输出命令中的待输出字段;

s203,若是,则利用所述目标字段获取所述待输出字段的下标列表;

s204,根据所述下标列表从所述目标文件中获取待输出文本,将所述待输出字段与所述待输出文本保存至临时文件,其中每个待输出字段与每个待输出字段对应的待输出文本保存在所述临时文件中的同一列;

s205,判断所述输出命令中是否有精准匹配选项;若是,则执行s206,若否,则执行s207;

需要说明的是,精准匹配选项可以是输出命令中的-p选项,如果输出命令中有-p选项,则认为输出命令为精确匹配模式,则不需要显示第一行的目标字段。

s206,将所述临时文件中的目标字段删除,根据预设规则输出所述临时文件的每列内容;

s207,根据预设规则输出所述临时文件的每列内容。

为了更清晰地显示输出文本,基于上述实施例本发明实施例提供一种具体的命令行信息输出的方法,具体包括:

当预设了颜色输出标志时,所述根据预设规则输出所述临时文件的每列内容之前,还包括:

根据预设颜色逐行处理所述临时文件中的内容。

具体的,如果设置了需要按颜色输出,那么就根据默认的颜色对临时文件中的文本逐行处理,例如,第一行为字段行,采用蓝色,后面的所有文本内容行,按照行采用亮红色(magenta)和天蓝色(cyan)交替输出。需要说明的是,为了更好的视觉效果,在逐行处理时,可以每一行中不同列颜色交替设置,相同列采用同一种颜色。

为了合理的设置输出内容的每一列宽度,本发明实施例提供一种具体的命令行信息输出的方法,具体地,所述根据预设规则输出所述临时文件的每列内容之前,还包括:

根据所述临时文件中的每一列内容的最大宽度值设定每一列的宽度。

具体地,例如,待输出字段为"b:c:a",其中a对应的文本为a1,a2,a3;其中a1的宽度为6,a2的宽度为7,a3的宽度为8,那么a对应的列宽可以按照a3的宽度设置,为了显示清晰,可以在a3宽度的基础上加1,也就是列宽可以设置为9。同样地b、c列也进行同样地设置。

本发明实施例提供一种具体的命令行信息输出的方法,具体包括:

本发明实施例采用bash+awk语言进行算法描述,具体实现可使用bash+awk或python。需要说明的是,在实现之前需要将空格或者tab替换为冒号(:),其中连续的空格或tab用一个冒号代替,折中处理可以再linux平台上使用tr命令快速实现。

假定要提取的linux命令行输出对应的命令为foo,本方案提供的命令行信息输出对应的脚本为lsgen。执行foo输出如下:

veli@idorax:~$foo

destination:gateway:genmask:flags:metric:ref:use:iface

default:10.11.255.254:0.0.0.0:ug:0:0:0:eth0

10.158.0.0:0.0.0.0:255.255.0.0:u:1:0:0:eth0

100.0.0.0:100.1.255.254:255.0.0.0:ug:20:0:0:eth1

其中,第1行为字段,以冒号作为分隔符。第2-4行为待显示文本,同样以冒号作为分割符。

现在,需要提取字段为iface,flags。在linux终端上执行格式化列提取命令,输出如下:

veli@idorax:~$foo|lsgen–p–oiface,flags

eth0:ug

eth0:u

eth1:ug

第1步:提取目标的第一行,作为全部字段fd_full,其中第一行包括了目标文件中的所有字段,在上例中,fd_full为destination:gateway:genmask:flags:metric:ref:use:iface;

第2步:根据用户输入的待输出字段列表fd_user(例如:iface,flags),在fd_full中进行查询。如用户输入的字段列表中有任何一个字段不存在,则报错退出;

第3步:如用户输入的字段列表fd_user的每一个字段都在fd_full中,则输出一个下标列表index_user。例如:fd_full="a:b:c:d:e",fd_user="b:c:a",则index_user="2:3:1";

第4步:根据下标列表index_user按列提取待显示文本中的内容,保存到临时文件f_tmp;

第5步:如果用户指定了-p选项(也就是支持可精确匹配模式),删除临时文件f_tmp中的第一行(字段列表),然后将临时文件f_tmp的内容直接打印到标准输出;

第6步:如果用户没有指定-p选项(也就是普通显示模式),根据用户定义的颜色输出标志将临时文件f_tmp输出到屏幕。如用户未设定颜色输出标志,则将临时文件f_tmp直接输出到屏幕;否则逐行处理,第一行为字段行,采用蓝色(blue)输出;后面的所有内容行按照亮红色(magenta)和天蓝色(cyan)交替输出(这么做的目的是为了改善用户体验);另外,在普通显示模式中,默认的对齐方式为向左对齐,如果用户通过设置环境变量algin=right,则对齐方式为向右对齐;

第7步:删除临时文件f_tmp。

需要说明的是,具体实现完成后的程序名为lsgen,利用lsgen输出内容如图3至图5所示。图3为精确匹配模式效果图;图4为用户未定义彩色输出标志的输出内容效果图,默认对齐方式为左对齐;图5为用户定义了右对齐的效果图。

下面对本发明提供的一种命令行信息输出的装置进行介绍,下面介绍的一种命令行信息输出的装置与上述的一种命令行信息输出的方法可以相互参照。

参照图6本发明提供的一种命令行信息输出的装置具体包括:

目标字段获取模块301,用于根据输出命令确定目标文本,获取所述目标文本的目标字段;

具体地,输出命令是指用户输入的命令,通过输出命令可以知道需要输出哪个文件中的哪些字段对应的内容。首先目标字段获取模块301根据输出命令确定待输出内容所在的文件,也就是目标文件;提取目标文件中的第一行字段,其中第一行字段是包括了目标文件中所有字段的目标字段。

第一判断模块302,用于判断所述目标字段中是否存在所述输出命令中的待输出字段;

具体地,从输出命令中可以确定待输出的内容对应的字段,也就是待输出字段,第一判断模块302判断目标字段中是否有待输出字段,即,判断目标文本中的所有字段里是否有待输出的内容对应的字段,也就是说,通过字段判断目标文件中是否有待输出的内容。若是,则执行s103,若否,则可以反馈错误的信息。

下标列表获取模块303,用于当所述目标字段中存在所述输出命令中的待输出字段时,利用所述目标字段获取所述待输出字段的下标列表;

具体地,目标字段中有待输出字段,那么下标列表获取模块303根据目标字段确定带出字段的下标列表,下标列表可以是待输出字段在目标字段中顺序,例如目标字段为"a:b:c:d:e",待输出字段为"b:c:a",则下标列表为"2:3:1";

待输出文本获取模块304,用于根据所述下标列表从所述目标文件中获取待输出文本,将所述待输出字段与所述待输出文本保存至临时文件,其中每个待输出字段与每个待输出字段对应的待输出文本保存在所述临时文件中的同一列;

具体地,待输出文本获取模块304利用下标列表在目标文件中获取对应的待输出文本,将待输出文本和待输出字段报讯到临时文件中,其中字段与对应的文本在一列。例如,待输出字段为"b:c:a",其中b对应的文本为b1,b2,b3;c对应的文本为c1,c2,c3;a对应的文本为a1,a2,a3。则可以以下述的格式存储到临时文件。

第一输出模块305,用于根据预设规则输出所述临时文件的每列内容。

具体地,预设规则可以是文件内容左对齐模式或文件内容右对齐模式。第一输出模块305根据预设模式输出临时文件的内容。

通过以上方案可知,本发明实施例提供的一种命令行信息输出的方法,根据用户输入的输出命令,目标字段获取模块301确定用户要获取的内容所在的文本,并将文本的第一行字段提取出来,下标列表获取模块303在第一行字段中找到用户想要获取的字段,并获取用户想获取的字段的下标,待输出文本获取模块304根据下标按列输出用户想要得到的内容。按列输出内容,也就是每个字段对应的内容均在一列,因此输出的内容十分清晰,识别度很高。同时,由于每次输出内容时,都获取目标字段的下标列表,因此可以动态的根据下标找到要输出的内容,降低了字段顺序变化时,输出内容的不确定性,降低了维护的成本。

为了使输出文本支持精确匹配模式,基于上述实施例本发明实施例提供一种具体的命令行信息输出的装置,基于上述实施例,本发明实施例具体包括:

目标字段获取模块301,用于根据输出命令确定目标文本,获取所述目标文本的目标字段;

第一判断模块302,用于判断所述目标字段中是否存在所述输出命令中的待输出字段;

下标列表获取模块303,用于当所述目标字段中存在所述输出命令中的待输出字段时,利用所述目标字段获取所述待输出字段的下标列表;

待输出文本获取模块304,用于根据所述下标列表从所述目标文件中获取待输出文本,将所述待输出字段与所述待输出文本保存至临时文件,其中每个待输出字段与每个待输出字段对应的待输出文本保存在所述临时文件中的同一列;

第二判断模块401,用于所述根据预设规则输出所述临时文件的每列内容之前,判断所述输出命令中是否有精准匹配选项;若否,则继续调用所述第一输出模块305;

需要说明的是,精准匹配选项可以是输出命令中的-p选项,如果输出命令中有-p选项,则认为输出命令为精确匹配模式,则不需要显示第一行的目标字段。

第二输出模块402,用于当所述输出命令中有精准匹配选项时,将所述临时文件中的目标字段删除,根据预设规则输出所述临时文件的每列内容。

第一输出模块305,用于根据预设规则输出所述临时文件的每列内容。

为了更清晰地显示输出文本,基于上述实施例本发明实施例提供一种具体的命令行信息输出的装置,具体地,本发明实施例还包括:

颜色处理模块,用于当预设了彩色输出标志时,在所述根据预设规则输出所述临时文件的每列内容之前,根据预设颜色逐行处理所述临时文件中的内容。

具体的,如果设置了需要按颜色输出,那么颜色处理模块就根据默认的颜色对临时文件中的文本逐行处理,例如,第一行为字段行,采用蓝色,后面的所有文本内容行,按照行采用亮红色(magenta)和天蓝色(cyan)交替输出。需要说明的是,为了更好的视觉效果,在逐行处理时,可以每一行中不同列颜色交替设置,相同列采用同一种颜色。

为了合理的设置输出内容的每一列宽度,本发明实施例提供一种具体的命令行信息输出的装置,具体地,基于上述实施例本发明实施例还包括:

宽度设定模块,用于在所述根据预设规则输出所述临时文件的每列内容之前,获取所述临时文件中的每一列内容的最大宽度值,根据所述最大宽度值设定每一列的宽度。

具体地,例如,待输出字段为"b:c:a",其中a对应的文本为a1,a2,a3;其中a1的宽度为6,a2的宽度为7,a3的宽度为8,那么a对应的列宽可以按照a3的宽度设置,为了显示清晰,可以在a3宽度的基础上加1,也就是列宽可以设置为9。同样地b、c列也进行同样地设置。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1