如何将egrep匹配到的每组三条结果合并为同一行输出
实现方法
你可以直接在原有 grep 命令的管道后追加以下任意一种处理逻辑即可:
- 方法1:使用
xargs(最简单,适合固定每3行一组的场景)
完整命令:
说明:more filename.txt | egrep 'Name:|matchA:|matchB:' | xargs -L 3-L 3参数指定每3行作为一组输出为单行,自动用空格分隔。 - 方法2:使用
awk(更灵活,支持按内容判断分组边界)
完整命令:
说明:每读取一行先不换行输出,匹配到more filename.txt | egrep 'Name:|matchA:|matchB:' | awk '{printf "%s ",$0} /matchB:/{print ""}'matchB:行时输出换行符完成一组拼接,不受组内行数波动影响。
如果不需要保留原有grep逻辑,也可以直接用awk单独处理源文件,效率更高:awk '/Name:|matchA:|matchB:/{printf "%s ",$0} /matchB:/{print ""}' filename.txt - 方法3:使用
sed
完整命令:
说明:连续读取3行到模式空间,将换行符替换为空格输出。more filename.txt | egrep 'Name:|matchA:|matchB:' | sed 'N;N;s/\n/ /g'
内容的提问来源于stack exchange,提问作者Asad007
相关产品推荐
相关产品推荐

