哪些其他命令行程序具有这种输出格式?

哪些其他命令行程序具有这种输出格式?

我写了一个小程序来解析hg log的命令行输出,它看起来像这样:

changeset:   90:abcdef012345
tag:         tip
user:        me
date:        Sat Apr 30 17:42:05 2011 -0700
summary:     Made another change

changeset:   89:def012345abc
user:        me
date:        Sat Apr 30 16:52:19 2011 -0700
summary:     Made a change

实际上,我的程序足够通用,可以解析任何“键:值”对,只要每个新记录都由空行分隔即可。

现在我想疯狂地尝试对其他(真实)数据运行它。还有其他程序可以生成这样的“键:值”数据吗?

答案1

使用 tr 和 sed 两个命令,您可以将其转换为更像记录的格式:

echo 'changeset:   90echo 'changeset:   90:abcdef012345
tag:         tip
user:        me
date:        Sat Apr 30 17:42:05 2011 -0700
summary:     Made another change

changeset:   89:def012345abc
user:        me
date:        Sat Apr 30 16:52:19 2011 -0700
summary:     Made a change
' | tr '\n' ';' | sed 's/;;/\n/' 
changeset:   90:abcdef012345;tag:         tip;user:        me;date:        Sat Apr 30 17:42:05 2011 -0700;summary:     Made another change
changeset:   89:def012345abc;user:        me;date:        Sat Apr 30 16:52:19 2011 -0700;summary:     Made a change;;

但是,如果这是您的格式,我会选择更像 CSV 的格式。您不需要在每一行中重复标题,并且使用制表符代替“;”或“,” (如果您不需要制表符作为内容),您将获得一种非常适合手动解析、比较行、使用 grep 查找行、使用 LibreOffice 生成图表或将数据放入数据库的格式。

如果您有更不稳定的格式,xml 可能会更好 - 并不是本身,而是因为那里有太多的工具。

ESR 撰写的《Unix 编程艺术》第 5 章,也许你会为你的工作找到一些灵感。

相关内容