1、sed命令
1、基础
1、常见的模式
选项 | 作用 |
---|
-n | 预想模式,不输出所有的内容,输出操作的内容 |
-e | 可以执行多个命令-e,-e |
-r | 可以使用正则表达式 |
-f | 可以使用脚本 |
-i | 对源文件进行修改 |
2、常见的动作
动作 | 作用 |
---|
a | 在匹配的行后添加 |
i | 在匹配的行前添加 |
d | 删除指定的行 |
c | 修改指定的行,也就是一整行 |
s | 替换一些关键字,g全局替换 |
p | 打印指定的行 |
! | 取反的动作 |
w | 另存为 |
I | 忽略大小写 |
3、地址定界
符号 | 作用 |
---|
# | 表示数字,指定操作的行数 |
$ | 表示最后一行 |
/字/ | 通过匹配关键字,可以结合正则,大写的I忽略大小写 |
#1,#2 | 指定范围的行数 |
first~step | 1~2,从第一行开始以2为步长 |
addr1,+N | 匹配addr1行,以及后面的N行 |
addr1,-N | 匹配addr1行到N行 |
案例
1、常规匹配
[root@master ~]
q:x:1000:1000:q:/home/q:/bin/bash
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
ROOT:qqq:sdsad:/bin/bash111
[root@master ~]
root:x:0:0:root:root:bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin/root
daemon:x:2:2:daemon:/sbin:/sbin/nologin/root
operator:x:11:0:operator:/root:/sbin/nologin
[root@master ~]
root:x:0:0:root:root:bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin/root
daemon:x:2:2:daemon:/sbin:/sbin/nologin/root
[root@master ~]
root:x:0:0:root:root:bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin/root
daemon:x:2:2:daemon:/sbin:/sbin/nologin/root
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
2、修改
sed -i '1a\qqq\' passwd
#在第二行前面添加aaaa
sed -i '2i\aaaa\' passwd
[root@master ~]
[root@master ~]
[root@master ~]
[root@master ~]
[root@master ~]
[root@master ~]
[root@master ~]
2、grep命令
1、常见的选项
选项 | 作用 |
---|
-i | 忽略大小写 |
-o | 只打印匹配出的关键字 |
-n | 打印出行数 |
-c | 打印出匹配的总行数 |
-q | 静默输出,不输出任何的信息,用$?判断即可 |
-v | 取反,取出相反的结果 |
-r | 递归的搜索,显示文件和文件内容 |
-l | 只显示文件,不显示内容 |
-Ax | 只显示匹配行数的后几行,after |
-Bx | 显示匹配行数的前几行,before |
-Cx | 显示匹配到到行数的上下几行 |
–color | 对于匹配到内容高亮显示 |
1、案例
[root@controller mnt]
/etc/passwd
[root@controller mnt]
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
2、正则的选项
符号 | 作用 |
---|
^ | 以这个开头 |
$ | 以这个结尾的 |
< | 以这个字开头的字 |
> | 以这个字结尾的字 |
. | 匹配着单个字符 |
[abc] | 匹配abc中的任意一个字符 |
[^abc] | 不匹配abc中的任意一个字符 |
|取消后面单个字符的特殊含义 | |
* | 对前面的字符进行0次或者多次匹配 |
.* | 匹配所有的字符(后面的),匹配任意字符0次或者多次 |
1、案例
[root@controller mnt]
qqqwroo
wwrootwrroot
eeewro
root
rrr:root
rootroot
[root@controller mnt]
root
rrr:root
3、扩展正则
-
使用grep -E 或者egrep即可
-
使用这些符号的时候带上单引号,即可
符号 | 作用 |
---|
+ | 对前面一项进行匹配1次或者多次 |
? | 对前面一项匹配0次或者1次 |
{j} | 对前面一项匹配j次 |
{,j} | 对前面一项最多匹配j次 |
{j,} | 对前面一项至少匹配j次 |
{j,k} | 对前面一项至少匹配j次,最多匹配k次 |
a|b | 可以匹配a或者b |
(exp) | 就是将exp作为一个整体来进行匹配 |
[root@controller mnt]
192.168.200.10
[root@controller mnt]
192.168.200.10
3、awk命令
[root@controller mnt]
192.168.200.10