微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 在shell中,只打印命令输出中的特定行/单词

这是cloc命令的输出片段

C/C++ Header
 same                            0              0          42812          19019
 modified                       33              0            128            434
 added                           3             63            367            207
 removed                         0            105            265            479
Perl
 same                            0              0              0              0
 modified                        0              0              0              0
 added                           2              0              0              0
 removed                         0              0              0              0
-------------------------------------------------------------------------------
SUM:
  same                            0              0          54150          81007
  modified                       82              0            252           2137
  added                           7            184            802           1281
  removed                         0            234            734           1499
-------------------------------------------------------------------------------

使用Shell命令,如何仅打印82,2137(在行中修改)和7,1281(在行中添加)?我需要在“SUM:”下只打印这4个数字而忽略其余的数字.

解决方法:

如果要获取项目的两个版本之间添加/修改文件/行的数量,可以使用cloc的XML输出正确且稳健地执行此操作:

 cloc --xml --out=report.xml --diff  bash-4.2.tar.gz bash-4.3.tar.gz 

 xmlstarlet < report.xml sel -t \
    -m /diff_results/modified/total -v @sum_files -o ' ' -v @code -nl \
    -m /diff_results/added/total    -v @sum_files -o ' ' -v @code -nl 

xmlstarlet可以以您想要的任何格式输出数字.此特定示例使用此格式(已修改文件/行后跟添加文件/行):

15 11157
203 6058

处理计算机可读输出而不是人类可读输出的好处是,如果cloc稍后稍微改变其输出格式,它将不会中断.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐