grep 过滤,贪婪模式过滤
grep -E | egrep 扩展模式
[root@server1 mnt]# vim westos
westosroot
chroot
root
[root@server1 mnt]# grep root westos 过滤,只要是带root的关键字都会过滤出来
westosroot 含有root的字符串也会过滤出来
chroot
root
[root@server1 mnt]# vim westos
westosroot
chroot
root
hello
hello123
[root@server1 mnt]# egrep "root|hello" westos 既要过滤root又要过滤hello要用egrep,拓展命令
westosroot
chroot
root
hello
hello123
[root@server1 mnt]# grep -E "root|hello" westos 或在加-E 和egrep类似
westosroot
chroot
root
hello
hello123
| grep root passwd | 过滤root关键字 |
|---|---|
| grep ^root passwd | 以root开头 |
| grep root$ passwd | 以root结尾 |
| grep -i root passwd | 忽略大小写 |
grep -E “| root字符之前不能有字符 | |
| grep -E “root>” passwd | root字符之后不能有字符 |
| grep -数字 | 显示过滤行以及上面几行和下面几行 |
| grep -n | 显示匹配的行所在行号 |
| grep -A | 显示过滤行以及下面几行 |
| grep -B | 显示过滤行以及上面几行 |
| grep -v | 反向过滤 |
[root@server1 mnt]# cp /etc/passwd .
[root@server1 mnt]# grep root passwd 将含有root的关键字都过滤出来
root:x:0:0:root:/root:/bin/bash
test:root:test
test:chroot:test
test:test:root
operator:x:11:0:operator:/root:/sbin/nologin
[root@server1 mnt]# grep -i root passwd -i表示忽略大小写
root:x:0:0:root:/root:/bin/bash
test:root:test
test:chroot:test
test:test:ROOT
test:test:root
operator:x:11:0:operator:/root:/sbin/nologin
[root@server1 mnt]# grep -E "\" passwd root\> 表示root之后不能有字符
root:x:0:0:root:/root:/bin/bash
test:root:test
test:chroot:test
test:test:root
operator:x:11:0:operator:/root:/sbin/nologin
[root@server1 mnt]# grep -Ev "\" passwd Ev "\"表示过滤不含root关键字的项,反向过滤
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
[root@server1 mnt]# grep -n hello passwd
9:hello
[root@server1 mnt]# grep -n hello passwd 显示匹配的行所在行号
9:hello
[root@server1 mnt]# grep -n -3 hello passwd 匹配lhello以及hello上面3行和hello下面三行
6-sync:x:5:0:sync:/sbin:/bin/sync
7-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8-test:root:test
9:hello
10-test:chroot:test
11-test:test:ROOT
12-test:test:root
[root@server1 mnt]# grep -n -B3 hello passwd B3匹配hello以及上面三行
6-sync:x:5:0:sync:/sbin:/bin/sync
7-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8-test:root:test
9:hello
[root@server1 mnt]# grep -n -A3 hello passwd A3 匹配hello以及下面三行
9:hello
10-test:chroot:test
11-test:test:ROOT
12-test:test:root
| ^westos | 以westos开头 |
|---|---|
| westos$ | 以westos结尾 |
| w…s | w开头s结尾中间四个任意字符 |
| …s | s 结尾前5个任意字符 |
| * | 字符出现任意次 |
| ? | 字符出现0到1次 |
| + | 字符出现1次以上 |
| { n } | 字符出现n次 |
| { m , n } | 字符出现m到n次 |
| { 0 , n } | 字符出现0到n次 |
| { , n } | 字符最多出现n次 |
| { m , } | 字符最少出现m次 |
| (lee){ 2 } | lee字符串出现2次 |
[root@server1 mnt]# vim westos
westos
test westos
test westos test
ws
wes
wees
weees
weeees
weas
weaeas
weaeaeas
[root@server1 mnt]# grep westos westos
westos
test westos
test westos test
[root@server1 mnt]# grep ^westos westos 匹配 以westos开头
westos
[root@server1 mnt]# grep westos$ westos 匹配以westos结尾的
westos
test westos
[root@server1 mnt]# grep w.s westos w开头s结尾中间一个点表示任意一个字符
westos
test westos
test westos test
wes
[root@server1 mnt]# grep w..s westos w和s之间任意两个字符
wees
weas
[root@server1 mnt]# grep w...s westos w和s之间任意三个字符
weees
[root@server1 mnt]# grep -E "w.*s" westos .*表示.为无数个
westos
test westos
test westos test
ws
wes
wees
weees
weeees
weas
weaeas
weaeaeas
[root@server1 mnt]# grep -E "we*s" westos e*表示e为无数个
westos
test westos
test westos test
ws
wes
wees
weees
weeees
[root@server1 mnt]# grep -E "we?s" westos e? 表示e最多为0-1个
westos
test westos
test westos test
ws
wes
[root@server1 mnt]# grep -E "we+s" westos e+表示e为1到任意多个
westos
test westos
test westos test
wes
wees
weees
weeees
[root@server1 mnt]# grep -E "we{2}s" westos e{2}表示e出现2次
wees
[root@server1 mnt]# grep -E "we{1,2}s" westos e{1,2}表示出现1到2次
westos
test westos
test westos test
wes
wees
[root@server1 mnt]# grep -E "we{,2}s" westos e{,2} 表示e出现0到i2次
westos
test westos
test westos test
ws
wes
wees
[root@server1 mnt]# grep -E "we{2,}s" westos e{2,} 表示e出现2次以上
wees
weees
weeees
[root@server1 mnt]# grep -E "w(ea)*s" westos (ea)* 表示ea出现任意次数
ws
weas
weaeas
weaeaeas
[root@server1 mnt]# grep -E "w(ea){1}s" westos 表示ea出现1次
weas
[root@server1 mnt]# grep -E "w(ea){1,}s" westos 表示ea出现一次及以上
weas
weaeas
weaeaeas
sed 参数 命令 处理对象
sed 参数 处理对象 -f 处理规则文件
[root@server1 mnt]# sed 's/nologin/westos/g' passwd 将nologin 替换成westos
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/westos
daemon:x:2:2:daemon:/sbin:/sbin/westos
adm:x:3:4:adm:/var/adm:/sbin/westos
lp:x:4:7:lp:/var/spool/lpd:/sbin/westos
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/westos
operator:x:11:0:operator:/root:/sbin/westos
[root@server1 mnt]# vim rule 建立一个规则文件
s/sbin/lee/g 将sbin替换成lee
[root@server1 mnt]# sed -f rule passwd -f指定规则文件
[root@server1 mnt]# sed -f rule passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/lee/nologin
daemon:x:2:2:daemon:/lee:/lee/nologin
adm:x:3:4:adm:/var/adm:/lee/nologin
lp:x:4:7:lp:/var/spool/lpd:/lee/nologin
sync:x:5:0:sync:/lee:/bin/sync
shutdown:x:6:0:shutdown:/lee:/lee/shutdown
halt:x:7:0:halt:/lee:/lee/halt
p 表示显示
[root@server1 mnt]# sed 5p passwd
r1oot:x:0:0:root:/root:/bin/bash
b2in:x:1:1:bin:/bin:/sbin/nologin
d3aemon:x:2:2:daemon:/sbin:/sbin/nologin
a4dm:x:3:4:adm:/var/adm:/sbin/nologin
l5p:x:4:7:lp:/var/spool/lpd:/sbin/nologin 第5行多显示一次
l5p:x:4:7:lp:/var/spool/lpd:/sbin/nologin
s6ync:x:5:0:sync:/sbin:/bin/sync
s7hutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
h8alt:x:7:0:halt:/sbin:/sbin/halt
m9ail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@server1 mnt]# sed -n 5p passwd -n表示模式空间屏蔽掉,只显示第5行
l5p:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@server1 mnt]# sed -n 3,5p passwd 显示第3行到第5行
d3aemon:x:2:2:daemon:/sbin:/sbin/nologin
a4dm:x:3:4:adm:/var/adm:/sbin/nologin
l5p:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@server1 mnt]# sed -ne '3p;5p' passwd 表示第三行和第五行 ,-e表示多个策略,多个策略用;号隔开
d3aemon:x:2:2:daemon:/sbin:/sbin/nologin
l5p:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@server1 mnt]# sed -n '/^r/p' passwd /^r/p 表示显示以r开头的
r1oot:x:0:0:root:/root:/bin/bash
[root@server1 mnt]# sed -n '/bash$/p' passwd /bash$/ 表示显示以bash结尾的
r1oot:x:0:0:root:/root:/bin/bash
[root@server1 mnt]# sed -n '/bash$/!p' passwd /bash$/!表示不是以bash结尾的
b2in:x:1:1:bin:/bin:/sbin/nologin
d3aemon:x:2:2:daemon:/sbin:/sbin/nologin
a4dm:x:3:4:adm:/var/adm:/sbin/nologin
l5p:x:4:7:lp:/var/spool/lpd:/sbin/nologin
s6ync:x:5:0:sync:/sbin:/bin/sync
s7hutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
h8alt:x:7:0:halt:/sbin:/sbin/halt
m9ail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@server1 mnt]# sed -n '$p' passwd $p表示显示最后一行
m9ail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@server1 mnt]# sed -n '1p' passwd 1p表示显示第1行
r1oot:x:0:0:root:/root:/bin/bash
d表示删除
[root@server1 mnt]# sed 5d passwd 删除第5行
r1oot:x:0:0:root:/root:/bin/bash
b2in:x:1:1:bin:/bin:/sbin/nologin
d3aemon:x:2:2:daemon:/sbin:/sbin/nologin
a4dm:x:3:4:adm:/var/adm:/sbin/nologin
s6ync:x:5:0:sync:/sbin:/bin/sync
s7hutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
h8alt:x:7:0:halt:/sbin:/sbin/halt
m9ail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@server1 mnt]# sed '3,5d' passwd 删除第3行到第5行
r1oot:x:0:0:root:/root:/bin/bash
b2in:x:1:1:bin:/bin:/sbin/nologin
s6ync:x:5:0:sync:/sbin:/bin/sync
s7hutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
h8alt:x:7:0:halt:/sbin:/sbin/halt
m9ail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@server1 mnt]# sed -e '3d;5d' passwd 删除第3行和第5行
r1oot:x:0:0:root:/root:/bin/bash
b2in:x:1:1:bin:/bin:/sbin/nologin
a4dm:x:3:4:adm:/var/adm:/sbin/nologin
s6ync:x:5:0:sync:/sbin:/bin/sync
s7hutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
h8alt:x:7:0:halt:/sbin:/sbin/halt
m9ail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@server1 mnt]# sed -e '/^r/d' passwd 删除以r开头
b2in:x:1:1:bin:/bin:/sbin/nologin
d3aemon:x:2:2:daemon:/sbin:/sbin/nologin
a4dm:x:3:4:adm:/var/adm:/sbin/nologin
l5p:x:4:7:lp:/var/spool/lpd:/sbin/nologin
s6ync:x:5:0:sync:/sbin:/bin/sync
s7hutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
h8alt:x:7:0:halt:/sbin:/sbin/halt
m9ail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@server1 mnt]# sed -e '/nologin$/d' passwd 删除以nologin结尾的
r1oot:x:0:0:root:/root:/bin/bash
s6ync:x:5:0:sync:/sbin:/bin/sync
s7hutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
h8alt:x:7:0:halt:/sbin:/sbin/halt
[root@server1 mnt]# sed -e '/nologin$/!d' passwd 删除除了nologin结尾的
b2in:x:1:1:bin:/bin:/sbin/nologin
d3aemon:x:2:2:daemon:/sbin:/sbin/nologin
a4dm:x:3:4:adm:/var/adm:/sbin/nologin
l5p:x:4:7:lp:/var/spool/lpd:/sbin/nologin
m9ail:x:8:12:mail:/var/spool/mail:/sbin/nologin
a 表示添加
[root@server1 mnt]# cp /etc/fstab .
[root@server1 mnt]# cat fstab
#
# /etc/fstab
# Created by anaconda on Thu Apr 7 23:55:54 2022
#
[root@server1 mnt]# sed '2ahello westos' fstab 表示第2行添加hello westos
#
hello westos
# /etc/fstab
# Created by anaconda on Thu Apr 7 23:55:54 2022
#
[root@server1 mnt]# sed '2ahello\nwestos' fstab 表示多行添加 \n表示换行符
#
hello
westos
# /etc/fstab
# Created by anaconda on Thu Apr 7 23:55:54 2022
#
[root@server1 mnt]# sed '$ahello\nwestos' fstab 表示在文件之后添加
UUID=4dd73a1e-55bd-4848-878d-c67e200f767a /boot xfs defaults 0 0
/dev/mapper/rhel-swap swap swap defaults 0 0
hello
westos
[root@server1 mnt]# sed '/#/ahello\nwestos' fstab 表示含有#行后开始添加
#
hello
westos
# /etc/fstab
hello
westos
c表示整行的替换
[root@server1 mnt]# sed '/sbin/chello westos' passwd 将含有sbin的行替换成hello westos
r1oot:x:0:0:root:/root:/bin/bash
hello westos
hello westos
hello westos
hello westos
hello westos
hello westos
hello westos
hello westos
[root@server1 mnt]# sed '/^r/chello westos' passwd 表示以r开头的行替换成hello westos
hello westos
b2in:x:1:1:bin:/bin:/sbin/nologin
d3aemon:x:2:2:daemon:/sbin:/sbin/nologin
a4dm:x:3:4:adm:/var/adm:/sbin/nologin
l5p:x:4:7:lp:/var/spool/lpd:/sbin/nologin
s6ync:x:5:0:sync:/sbin:/bin/sync
s7hutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
h8alt:x:7:0:halt:/sbin:/sbin/halt
m9ail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@server1 mnt]# sed '$chello westos' passwd 表示文件最后一行替换成hello westos
r1oot:x:0:0:root:/root:/bin/bash
b2in:x:1:1:bin:/bin:/sbin/nologin
d3aemon:x:2:2:daemon:/sbin:/sbin/nologin
a4dm:x:3:4:adm:/var/adm:/sbin/nologin
l5p:x:4:7:lp:/var/spool/lpd:/sbin/nologin
s6ync:x:5:0:sync:/sbin:/bin/sync
s7hutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
h8alt:x:7:0:halt:/sbin:/sbin/halt
hello westos
w 表示将符合条件的行写入到指定文件中
[root@server1 mnt]# sed '/bash/w testfile' passwd 表示把含bash的行过滤出来写入到指定的文件
[root@server1 mnt]# cat testfile
r1oot:x:0:0:root:/root:/bin/bash
i 表示插入
[root@server1 mnt]# vim westos
hello
westos
linux
[root@server1 mnt]# sed '/westos/iwestoslinux' westos
hello
westoslinux 在westos上面插入
westos
linux
r 表示整合
[root@server1 mnt]# vim lee
123
[root@server1 mnt]# sed '2rlee' westos 表示将lee文件内容整合到westos文件第二行后
hello
westos
123
linux
[root@server1 mnt]# sed '/hello/rlee' westos 表示将lee文件内容整合到hello之下
hello
123
westos
linux
[root@server1 mnt]# sed 's/:/@@@/g' passwd 表示文件全文所有列所有行:替换成@,s表示所有行,g表示所有列
root@@@x@@@0@@@0@@@root@@@/root@@@/bin/bash
bin@@@x@@@1@@@1@@@bin@@@/bin@@@/sbin/nologin
daemon@@@x@@@2@@@2@@@daemon@@@/sbin@@@/sbin/nologin
adm@@@x@@@3@@@4@@@adm@@@/var/adm@@@/sbin/nologin
lp@@@x@@@4@@@7@@@lp@@@/var/spool/lpd@@@/sbin/nologin
sync@@@x@@@5@@@0@@@sync@@@/sbin@@@/bin/sync
shutdown@@@x@@@6@@@0@@@shutdown@@@/sbin@@@/sbin/shutdown
halt@@@x@@@7@@@0@@@halt@@@/sbin@@@/sbin/halt
polkitd@@@x@@@999@@@998@@@User for polkitd@@@/@@@/sbin/nologin
[root@server1 mnt]# sed '1,5s/:/@@@/g' passwd 表示1到5行被换掉
root@@@x@@@0@@@0@@@root@@@/root@@@/bin/bash
bin@@@x@@@1@@@1@@@bin@@@/bin@@@/sbin/nologin
daemon@@@x@@@2@@@2@@@daemon@@@/sbin@@@/sbin/nologin
adm@@@x@@@3@@@4@@@adm@@@/var/adm@@@/sbin/nologin
lp@@@x@@@4@@@7@@@lp@@@/var/spool/lpd@@@/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
[root@server1 mnt]# sed '5s/:/@@@/g' passwd 表示第5行替换
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp@@@x@@@4@@@7@@@lp@@@/var/spool/lpd@@@/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
[root@server1 mnt]# sed '/r/s/:/@@@/g' passwd 表示含有r行的被替换掉
root@@@x@@@0@@@0@@@root@@@/root@@@/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm@@@x@@@3@@@4@@@adm@@@/var/adm@@@/sbin/nologin
lp@@@x@@@4@@@7@@@lp@@@/var/spool/lpd@@@/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
polkitd@@@x@@@999@@@998@@@User for polkitd@@@/@@@/sbin/nologin
[root@server1 mnt]# sed '/root/,/daemon/s/:/@@@/g' passwd 表示root字符到daemon字符之间的被替换
root@@@x@@@0@@@0@@@root@@@/root@@@/bin/bash
bin@@@x@@@1@@@1@@@bin@@@/bin@@@/sbin/nologin
daemon@@@x@@@2@@@2@@@daemon@@@/sbin@@@/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
[root@server1 mnt]# sed -e '7s/:/@@@/g;5s/:/@@@/g' passwd 表示第7行和第5行被替换,多个策略用;隔开
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp@@@x@@@4@@@7@@@lp@@@/var/spool/lpd@@@/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown@@@x@@@6@@@0@@@shutdown@@@/sbin@@@/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
[root@server1 mnt]# sed -e '$s/:/@@@/g' passwd 表示最后一行被替换
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
polkitd@@@x@@@999@@@998@@@User for polkitd@@@/@@@/sbin/nologin
[root@server1 mnt]# cp /etc/fstab .
[root@server1 mnt]# sed 's/#/ /g' fstab 将全文#号替换成空格
/etc/fstab
Created by anaconda on Thu Apr 7 23:55:54 2022
Accessible filesystems, by reference, are maintained under '/dev/disk'
See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
[root@server1 mnt]# sed 's/#/ /g' -i fstab -i 表示把替换后的结果保存到原文件中
[root@server1 mnt]# cat fstab
/etc/fstab
Created by anaconda on Thu Apr 7 23:55:54 2022
Accessible filesystems, by reference, are maintained under '/dev/disk'
See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
[root@server1 mnt]# sed 's/\//###/g' fstab 将/ 替换成###,/为特殊字符需要转译/\//
###etc###fstab
Created by anaconda on Thu Apr 7 23:55:54 2022
Accessible filesystems, by reference, are maintained under '###dev###disk'
See man pages fstab(5), findfs(8), mount(8) and###or blkid(8) for more info
/ 分隔符不好看可以用@分隔符
[root@server1 mnt]# sed 's@/@###@g' fstab
###etc###fstab
Created by anaconda on Thu Apr 7 23:55:54 2022
Accessible filesystems, by reference, are maintained under '###dev###disk'
See man pages fstab(5), findfs(8), mount(8) and###or blkid(8) for more info
用法:awk -F 分隔府 BEGIN{}{}END{}FILENAME
| NR | 行数 |
|---|---|
| NF | 列数 |
| FILENAME | 文件名称本身 |
| westos | westos变量值 |
| “westos” | westos字符串 |
[root@server1 mnt]# cp /etc/passwd .
[root@server1 mnt]# awk -F : 'BEGIN{print "westos"}' passwd -F指定分隔符,"westos" 带双引号为字符,不带双引号为变量直
westos
[root@server1 mnt]# awk -F : 'BEGIN{print "start"}{print $1}' passwd 先打印start再打印所有行的第一列; BEGIN表示开始做的事情,$1表示打印所有行的第一列
start
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
dbus
[root@server1 mnt]# awk -F : 'BEGIN{print "start"}{print $1}END{print "end"}' passwd end 表示在完成之后所做的事情
start
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
dbus
end
[root@server1 mnt]# awk -F : 'BEGIN{print "start"}{print $3,$4}END{print "end"}' passwd $3,$4 表示第三列和第四列
start
0 0
1 1
2 2
3 4
4 7
5 0
6 0
7 0
8 12
11 0
12 100
14 50
99 99
81 81
end
[root@server1 mnt]# awk -F : 'BEGIN{print "start"}{print $0}END{print "end"}' passwd $0表示所有的列
start
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
end
[root@server1 mnt]# awk -F : 'BEGIN{print "start"}{print NF}END{print "end"}' passwd NF表示每一行的列数
start
7
7
7
7
7
7
7
7
7
7
7
7
7
7
end
[root@server1 mnt]# awk -F : 'BEGIN{print "start"}{print NR}END{print "end"}' passwd NR表示行号
start
1
2
3
4
5
6
7
8
9
10
11
12
13
14
end
[root@server1 mnt]# awk -F : 'BEGIN{print "start"}{print FILENAME}END{print "end"}' passwd FILENAME表示文件本身名称
start
passwd
passwd
passwd
passwd
passwd
passwd
passwd
passwd
passwd
passwd
passwd
passwd
passwd
passwd
end
/bash$/ 条件
/条件1|条件2/ 条件1或者条件2
/条件1/||/条件2/ 条件1或者条件2
/条件1/&&/条件2/ 条件1并且条件2
[root@server1 mnt]# awk -F : '/bash/{print $1}' passwd 打印以bash结尾的行的第一列
root
[root@server1 mnt]# awk -F : '/bash|nologin/{print $1}' passwd 打印以bash或者以nologin结尾行的第一列(一个条件里有两个元素)
root
bin
daemon
adm
lp
mail
operator
games
ftp
nobody
dbus
[root@server1 mnt]# awk -F : '/bash/||/nologin/{print $1}' passwd 打印以bash或者以nologin结尾行的第一列(两个条件的或者关系)
root
bin
daemon
adm
lp
mail
operator
games
ftp
nobody
dbus
[root@server1 mnt]# awk -F : '/^root/&&/bash/{print $1}' passwd 打印以root开头并且bash结尾行的第一列
root
[root@server1 mnt]# awk -F : '!/^root/&&/bash/{print $1}' passwd 打印不是以root开头并且以bash结尾的第一列
test
[root@server1 mnt]# awk -F : '$7~/bash/{print $1,$7}' passwd 表示第7列结尾含有bash字符的,打印该行的第一列和第7列
root /bin/bash
test /sbin/bash
[root@server1 mnt]# awk -F : '$7!~/bash/{print $1,$7}' passwd 表示第7列结尾不含有bash字符的,打印该行的第一列和第7列
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
lp /sbin/nologin
sync /bin/sync
shutdown /sbin/shutdown
halt /sbin/halt
mail /sbin/nologin
operator /sbin/nologin
games /sbin/nologin
ftp /sbin/nologin
nobody /sbin/nologin
dbus /sbin/nologin
Apache_port.sh
此脚本接入数字,http的端口就改为数字,假设selinux为关闭状态
例如:
sh Apache_port.sh
ERROR: Pleaase input port number following script !!
sh Apache_port.sh 8080
apache的端口会被修改为8080
[root@server1 mnt]# vim Apache_port.sh
#!/bin/bash
[ -z "$*" ] && {
echo "Error: Please input port number following script !!"
exit
}
rpm -q httpd &> /dev/null || {
echo "Error: Apache is not installd !!"
}
netstat -antlupe | grep -E "\<$*\>" &> /dev/null && {
echo "Error: $* is in usd!!"
exit
}
sed "/^Listen/cListen $*" -i /etc/httpd/conf/httpd.conf
systemctl restart httpd
统计在系统中能su切换的用户
[root@server1 mnt]# grep -E "\