我在目录中执行了递归 grep 来查找所有匹配的文件,如下所示
grep -ER "match_string1|match_string2" /path/to/dir/
我得到的输出是:
/path/to/dir/timestamp.log:match_string1
/path/to/dir/timestamp.log:match_string2
/path/to/dir/timestamp.log:match_string2
其中match_string1代表模型# 其中match_string2代表测试结果
我想合并这些行,以便我可以说当模型#和测试结果匹配特定标准时然后计数
注意:可以将两个 match_string2 与 match_string1 放在同一行
我期望的示例输出:
/path/to/dir/timestamp.log:match_string1; /path/to/dir/timestamp.log:match_string2; /path/to/dir/timestamp.log:match_string2
感谢您的帮助
答案1
sed '/match_string1/{
:1
N
/\n.*match_string2/s/\n/; /
t1
P
D
}'
当脚本遇到行时,match_string1
将下一行添加到模式中,并检查该添加的行中是否有,match_string2
如果是,则它们替换n
ewline 符号;
并添加下一行进行检查。如果没有match_string2
(因此尚未进行替换),脚本将打印第一行并从第二行开始开始处理。