2019-04-16

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   全局替换

[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 '/^开头的内容

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

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

[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-04-16)