理解Linux 中sed命令的工作机制

 

001、

复制代码
[root@PC1 test]# ls
a.txt
[root@PC1 test]# cat a.txt                ## 测试数据
01 02
03 04 kk
05 06
07 08
09 10
11 12
[root@PC1 test]# sed '' a.txt             ## 说明在默认情况下,sed会原样输出的
01 02
03 04 kk
05 06
07 08
09 10
11 12
[root@PC1 test]# sed -n '' a.txt           ## -n选项屏蔽了数据的原样输出
复制代码

 。

 

002、

复制代码
[root@PC1 test]# ls
a.txt
[root@PC1 test]# cat a.txt                      ## 测试数据
01 02
03 04 kk
05 06
07 08
09 10
11 12
[root@PC1 test]# sed -n '/kk/p' a.txt          ## 说明-p会输出匹配的行
03 04 kk
[root@PC1 test]# sed -n '/kk/{n;p}' a.txt      ## 为什么输出了匹配行的下一行。 匹配行为kkk,但是n选项会读入下一行,然后p输出。 (此处的n跟 前边的-n不是一个东西!!!)
05 06
复制代码

 。

 

003、

复制代码
[root@PC1 test]# ls
a.txt
[root@PC1 test]# cat a.txt                                 ## 测试数据
01 02
03 04 kk
05 06
07 08
09 10
11 12
[root@PC1 test]# sed -n '/kk/p' a.txt                      ## -n屏蔽原始数据, p输出匹配行
03 04 kk
[root@PC1 test]# sed -n '/kk/{n;p}' a.txt                  ## n选项读取了下一行放入模式空间,但是只对读取的第二行进行处理
05 06
[root@PC1 test]# sed -n '/kk/{N;p}' a.txt                  ## N选项读取了下一行放入模式空间,会将两行当作一行来处理
03 04 kk
05 06
复制代码

 。

 

004、

复制代码
[root@PC1 test]# ls
a.txt
[root@PC1 test]# cat a.txt                ## 测试数据
01 02
03 04 kk
05 06
07 08
09 10
11 12
[root@PC1 test]# sed 'N;p' a.txt       ## 首选输出基础的行,因为没有-n, 然后N每次读入下一行,两行当作一行,p输出,因为没两行重复一次
01 02
03 04 kk
01 02
03 04 kk
05 06
07 08
05 06
07 08
09 10
11 12
09 10
11 12
[root@PC1 test]# sed 'n;p' a.txt      ## 首先输出基础行(如果不是首先输出基础行,则第一行是03 04 kk),然后n读取下一行,但是只把读入的下一行放入模式空间, 因此是没两行处理一次,进输出第二行
01 02
03 04 kk
03 04 kk
05 06
07 08
07 08
09 10
11 12
11 12
复制代码

 。

 

posted @   小鲨鱼2018  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2022-10-29 linux 中如何将一列数据转换为指定列的数据
2022-10-29 Linux中如何实现将一列数据转换为一行数据
2022-10-29 gatk 对多个样本的g.vcf文件进行合并、进行变异检测
2022-10-29 linux 中如何在指定行后面插入内容
2022-10-29 python 中统计文件的行数
2021-10-29 R语言中实现方差和标准差
2021-10-29 R语言中rbind函数和cbind的用法
点击右上角即可分享
微信分享提示