Linux 中 grep命令仅仅输出匹配的字符串

 

001、

复制代码
[root@PC1 test]# ls
a.txt
[root@PC1 test]# cat a.txt                 ## 测试数据
aa 33 aa 77 bb
aa aa 22 aa kk
cc bb dd aa uu
88 33 88 rr qq
[root@PC1 test]# grep -oP "aa" a.txt       ## 输出仅仅匹配的内容,但是换行了
aa
aa
aa
aa
aa
aa
[root@PC1 test]# grep -noP "aa" a.txt      ## 同时输出匹配的行号
1:aa
1:aa
2:aa
2:aa
2:aa
3:aa
[root@PC1 test]# grep -noP "aa" a.txt | sed 's/:/\t/' | awk '{if(NR == 1) {printf("%s\t", $2); tmp = $1} else {if($1 == tmp){printf("%s\t", $2)} else {printf("\n%s\t", $2);}}; tmp = $1}' | sed '$ s/\t$/\n/'        ## 每一行匹配到的内容在原始行中输出
aa      aa
aa      aa      aa
aa
复制代码

 。

 

002、输出对应的行号

[root@PC1 test]# grep -nP "aa" a.txt | cut -d ":" -f 1 | paste - <(grep -noP "aa" a.txt | sed 's/:/\t/' | awk '{if(NR == 1) {printf("%s\t", $2); tmp = $1} else {if($1 == tmp){printf("%s\t", $2)} else {printf("\n%s\t", $2);}}; tmp = $1}' | sed '$ s/\t$/\n/')     ## 输出对应的行号
1       aa      aa
2       aa      aa      aa
3       aa

 。

 

posted @   小鲨鱼2018  阅读(179)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2023-07-13 linux 中awk命令的几个常用算数函数
2023-07-13 linux 中实现对awk数组的排序
2023-07-13 linux 中 M-cM-^@M-^@M-cM-^@M-^@特殊字符的处理
2023-07-13 linux 中awk命令输出指定字段分隔符分割的长度
2023-07-13 linux 中 awk命令中的substr选项
2022-07-13 linux 中实现数据的每一列都对齐
2022-07-13 plink 软件 --hardy参数计算哈代温伯格平衡中 p值的来源
点击右上角即可分享
微信分享提示