2019.4.18三剑客 sed

1.grep参数

-i    忽略大小写

-v    取反 显示除了xx的其它内容

-n    显示行号

-o    显示过程

-e    支持扩展正则(egrep)

-w    只显示xx(前后都没有东西)

-l    只显示文件名,不显示内容

-R    递归过滤

-A    (after)显示grep显示出的内容及接下来的几行   例如:1A 1B 1C

-B    (before)之前的几行

-C     显示上面和下面几行

-c     统计多少行有xx字母

[root@huahua ~]# find /tmp /etc -type f | xargs grep -l 'oldboy'     //在/tmp和/etc中找出包含oldboy的文件的文件名(只想要文件名)


[root@huahua ~]# grep -Rl 'oldboy' /etc/ /tmp/    //先查看/etc/里面的oldboy  再查看/tmp/里面的oldboy,只显示文件名


[root@huahua ~]# seq 10 | grep -A2 '1'    //显示1的后2行


[root@huahua ~]# seq 10 | grep -B2 '1'    //显示1的前2行


[root@huahua ~]# seq 10 | grep -C2 '1'    //显示1的前2行和后2行


查找oldboy.txt有多少行有oldboy

[root@huahua ~]# grep -c 'oldboy' oldboy.txt    //可以看到在oldboy.txt文件中,有三行含有oldboy


2.sed功能 增删改查

sed  过滤 替换(修改)取行   增查删改  (参数  条件    命令)

sed 命令执行过程  -n   只显示某一行。取消默认输出  sed查找-p 据行号进行查找  

sed  增加

 -a 追加内容 -i 插入 -c  把一行内容清空 然后写入    

sed删除

-d  删除内容

sed修改

sed ‘s###g‘

s  替换  g 全局替换

sed命令执行过程:找谁干啥 

(1)查

-n:   取消默认输出   -p:  (print)显示   (有-p就有-n)


(2)增

                         a   (append)添加到某行下面   例如3a 3c 3i

-i:    修改文件内容     c   (replace)把这一行内容先清空,然后再写入

                         i    添加到某行上面

-i.bak    先备份,再修改文件内容

(3)删

-d    (delete)删除,需要前面搭配i使用

(4)改

sed ‘s# # #g’ +文件名   s  (sed) 替换

                          g   全局替换

3.

[root@huahua ~]# sed -n '3,5p' oldboy.txt    //查找oldboy.txt第3行到第5行

//之间默认用基础正则,如果用扩展正则需要加r


[root@huahua ~]# sed -n '/oldboy/p' oldboy.txt    //查找oldboy.txt里面的oldboy

[root@huahua ~]# sed -nr '/oldboy|oldbey/p' oldboy.txt    //查找oldboy和oldbey

[root@huahua ~]# sed -n '/oldboy/,/oldbey/p' oldboy.txt    //查找oldboy到oldbey(常用)


[root@huahua ~]# sed -n '/oldboy/,/haha/p' oldboy.txt    //如果前面有oldboy,后面哈哈没有,就从有oldboy你行一直显示到尾巴


[root@huahua ~]# sed -n '/10:41:00/,/10:45:00/' oldboy.txt    //在oldboy.txt下查看从10:41:00到/10:45:00

[root@huahua ~]# sed -n '1p;3p;4p' oldboy.txt    //查看1,3,4行

[root@huahua ~]# sed -n 3p oldboy.txt    //查找oldboy.txt第3行

[root@huahua ~]# sed -n '1~2p' oldboy.txt    //从第1行开始,每次加2行(查看的是1.3.5行,一直到尾巴)

[root@huahua ~]# sed -n '2~2p' oldboy.txt    //从第2行开始,每次加2行(查看的是2.4.6行,一直到尾巴)

[root@huahua ~]# sed -n '/^$/p' oldboy.txt    //显示空行

[root@huahua ~]# sed -n '/^$/!p' oldboy.txt    //不显示空行

[root@huahua ~]# sed -rn '/^$|^#/!p' /etc/ssh/sshd_config    //显示/etc/ssh/sshd_config除了以#开头和$开头的内容

[root@huahua ~]# sed  '3awe are xxn' oldboy.txt    //在第3行下面添加we are xxn,

(用cat显示看不到添加内容,因为实际上没添加进去)

4.

[root@huahua ~]# sed  -i '3awe are xxn' oldboy.txt    //带上-i才会真正添加进去(用cat可查看的到)



[root@huahua ~]# sed  -i '3cwe are beacutiful' oldboy.txt    //替换第三行为we are beacuitul


[root@huahua ~]# sed  -i '3iyou is fairy' oldboy.txt    //i插入指定行上面,


[root@huahua ~]# '3,10d' huahua.txt    //删除huahua.txt里面的3-10行(删除内容用//,删行yong‘’)

[root@huahua ~]# sed -i '/haha/,/xixi/d' huahua.txt    //删除hha到xixi

[root@huahua ~]# sed  '/^$/d ' oldboy.txt    //删除oldboy.txt里的空行

[root@huahua ~]# sed -n '/^$/!p' oldboy.txt    //不显示空行

[root@huahua ~]# grep -v '^$' oldboy.txt    //不显示空行

5.s#  # #g’:这个就是固定格式

[root@lsr7 ~]# sed -i 's#enforcing#disabled#g' /etc/selinux/config

[root@lsr7 ~]# sed -i 's/UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config

// sed -i 's/ / /g' :语法就这样

6.后向引用:在前面(##)把你要的内容保护起来,再后两个##之间通过、数字来引用(先保护,再使用)

[root@huahua ~]# echo 123456 |sed  's#123456#<123456>#g'

<123456>

[root@huahua ~]# echo 123456|sed -r 's#(.*)#<\1>#g'

<123456>

7.保留awk

[root@huahua ~]# awk '/^$/!' oldboy.txt    //保留空行

[root@huahua ~]# awk '!/^$/' oldboy.txt    //不保留空行

8.输出想要结果(1)12<34>56

[root@huahua ~]# echo 123456 | sed -r 's#(..)(..)(..)#\1<\2>\3#g'

12<34>56(2)<1><2><3><4><5><6>

[root@huahua ~]# echo 123456 | sed -r 's#(.)#<\1>#g'

<1><2><3><4><5><6>

[root@huahua ~]# echo {1..6} | sed -r 's#([0-9]+)#<\1>#g'

<1> <2> <3> <4> <5> <6>

你可能感兴趣的:(2019.4.18三剑客 sed)