1. 正则
  2. 什么是正则
  3. grep
  4. gerp/egrep正则示例
  5. sed
  6. awk
  7. 拓展

正则 什么是正则

  • egrep是grep的扩展,grep有的功能egrep都有 ​​​​​
  • grep 过滤指定关键词

  • 语法 grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录…]
  • 参数

-a或--text 不要忽略二进制的数据。

-A<显示列数>或--after-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之后的内容。

-b或--byte-offset 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。

-B<显示列数>或--before-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前的内容。

-c或--count 计算符合范本样式的列数。

-C<显示列数>或--context=<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。

-d<进行动作>或--directories=<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

-e<范本样式>或--regexp=<范本样式> 指定字符串做为查找文件内容的范本样式。

-E或--extended-regexp 将范本样式为延伸的普通表示法来使用。

-f<范本文件>或--file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。

-F或--fixed-regexp 将范本样式视为固定字符串的列表。

-G或--basic-regexp 将范本样式视为普通的表示法来使用。

-h或--no-filename 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。

-H或--with-filename 在显示符合范本样式的那一列之前,表示该列所属的文件名称。

-i或--ignore-case 忽略字符大小写的差别。 -l或--file-with-matches 列出文件内容符合指定的范本样式的文件名称。

-L或--files-without-match 列出文件内容不符合指定的范本样式的文件名称。

-n或--line-number 在显示符合范本样式的那一列之前,标示出该列的列数编号。

-q或--quiet或--silent 不显示任何信息。

-r或--recursive 此参数的效果和指定"-d recurse"参数相同。

-s或--no-messages 不显示错误信息。

-v或--revert-match 反转查找。

-V或--version 显示版本信息。

-w或--word-regexp 只显示全字符合的列。

-x或--line-regexp 只显示全列符合的列。

-y 此参数的效果和指定"-i"参数相同。

--help 在线帮助。

  • 简单过滤 grep ‘过滤词’ 文件名
  • [root@linux7-128 grep]# grep 'nologin' passwd 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 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 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:997:User for polkitd:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin libstoragemgmt:x:997:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin radvd:x:75:75:radvd user:/:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin unbound:x:995:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin colord:x:994:991:User for colord:/var/lib/colord:/sbin/nologin qemu:x:107:107:qemu user:/:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin geoclue:x:993:990:User for geoclue:/var/lib/geoclue:/sbin/nologin setroubleshoot:x:992:989::/var/lib/setroubleshoot:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin gdm:x:42:42::/var/lib/gdm:/sbin/nologin sssd:x:991:986:User for sssd:/:/sbin/nologin gnome-initial-setup:x:990:985::/run/gnome-initial-setup/:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin nginx:x:989:984:Nginx web server:/var/lib/nginx:/sbin/nologin
  • 在centos7里grep自动带有颜色区分,6是没有颜色的 [root@linux7-128 grep]# grep -c 'nologin' passwd 38
  • 在前面显示行号 -n
  • 不区分大小写 -i 可以把nologin 改为 NOLogin 或者 noLOGIN,然后使用-i检索 [root@linux7-128 grep]# grep -i 'nologin' passwd
  • 取反 -v 把不含有nologin的行检索出来,并且显示行号 [root@linux7-128 grep]# grep -vn 'nologin' passwd
  • 遍历所有子目录 -r 可以把/etc/目录下所有含有root的文件都找到

  • 过滤出符合要求的行以及下面n行 -An

[root@linux7-128 grep]# grep -nA2 'root' passwd 1:root:x:0:0:root:/root:/bin/bash 2-bin:x:1:1:bin:/bin:/sbin/NOLogin

  • 过滤出符合要求的行以及上面n行 -Bn

[root@linux7-128 grep]# grep -nB2 'root' passwd

  • 过滤出符合要求的行以及上下n行 -Cn

[root@linux7-128 grep]# grep -nC2 'root' passwd 1:root:x:0:0:root:/root:/bin/bash 2-bin:x:1:1:bin:/bin:/sbin/NOLogin

  • gerp/egrep正则示例

  • [ ]表示含有至少其中一个字符

grep ‘[0-9]’ 文件名

检索出文件里含有数字0-9的,加-n显示行号,便于区分

[root@linux7-128 grep]# grep -n '[0-9]' passwd 1:root:x:0:0:root:/root:/bin/bash 2:bin:x:1:1:bin:/bin:/sbin/NOLogin 3:daemon:x:2:2:daemon:/sbin:/sbin/noLOGIN 4:adm:x:3:4:adm:/var/adm:/sbin/nologin 5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6:sync:x:5:0:sync:/sbin:/bin/sync 7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 8:halt:x:7:0:halt:/sbin:/sbin/halt

  • 也可以检索出文件里不包含0-9的内容 ,加上-v [root@linux7-128 grep]# grep -nv '[0-9]'passwd
  • 没有内容,因为passwd文件里每一行都是带有数字的,可以用其他文件试试,比如/etc/inittab
  • [root@linux7-128 grep]# grep -nv '[0-9]' /etc/inittab 1:# inittab is no longer used
  • grep ‘^#’ 文件名
  • 检索出以#号开头的内容 [root@linux7-128 grep]# grep '^#' /etc/sos.conf disable

disable = rpm, selinux, dovecot

rpm.rpmva = off

general.syslogsize = 15

  • 也可以使用-v检索出不以#号开头的内容 [root@linux7-128 grep]# grep -v '^#' /etc/sos.conf [plugins]     [tunables]
  • grep ‘[^0-9]’ 文件名 检索出不含有数字0-9的内容,符合要求的会变红

  • 加上-v会显示只含有数字0-9的内容

[root@linux7-128 grep]# grep -v '[^0-9]' inittab 22222222222222 132456

  • grep ‘^[^0-9]’ 文件名 检索出不以数字开头的内容

[root@linux7-128 grep]# grep '^[^0-9]' inittab

inittab is no longer used when using systemd.

#ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

sdsfdgfdhgfhgfhfghfhfghgfhgfh # fsfsdgdfgdgdf a1324435 a132424a54544

Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target

#systemd uses 'targets' instead of runlevels. By default, there are two main targets:

#multi-user.target: analogous to runlevel 3

graphical.target: analogous to runlevel 5

#To view curr

sdfdsf ent default target, run:

systemctl get-default

#To set a default target, run:

systemctl set-default TARGET.target#

  • 加上-v会显示以数字开头的内容

[root@linux7-128 grep]# grep -v '^[^0-9]' inittab 1324343a322434 22222222222222 132456

  • 总结: ^ 放到外面表示以什么什么开头,如果放到[]里,意味着是[]里的字符的反义、非意
  • . 表示任意的一个字符 grep ‘字符.字符’ 文件
  • 以左边字符开头,右边字符结尾的内容 [root@linux7-128 grep]# grep 'r.o' passwd root:x:0:0:root:/root:/bin/bash s2sdsfdf:r1o:sdsfsdfs:23232 xcdscdsfs:rAo:233343:cdfdf operator:x:11:0:operator:/root:/sbin/nologin
  • *表示号左边的字符重复0-n次
  • grep ‘字符字符’ 文件 [root@linux7-128 grep]# grep 'h*w' passwd hhhhhhhhhhw: wdwwwww zxxsdww shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin nginx:x:989:984:Nginx web server:/var/lib/nginx:/sbin/nologin
  • grep'.*'文件 把所有文件内容检索出来
  • [root@linux7-128 grep]# grep 'hu.bash' passwd huhu:x:1000:1000::/home/huhu:/bin/bash huhu1:x:1001:1001::/home/huhu1:/bin/bash huhu2:x:1005:1006::/home/huhu2:/bin/bash huhu3:x:1007:1005::/home/huhu3:/bin/bash huhu4:x:1008:1005::/home/nhnh:/bin/bash huhu5:x:1010:1009::/home/huhu5:/bin/bash
  • {} 表示前面字符的重复范围 grep ‘o{2}’ passwd 检索出o出现2次的内容 [root@linux7-128 grep]# grep 'o{2}' passwd root:x:0:0:root:/root:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin setroubleshoot:x:992:989::/var/lib/setroubleshoot:/sbin/nologin huhu4:x:1008:1005::/hooome/nhnh:/bin/bash huhu5:x:1010:1009::/hoooome/huhu5:/bin/bash
  • egrep ‘o{1,3}’ passwd
  • 检索出o出现1-3次的内容 egrep ‘o{2}’ passwd= grep -E ‘o{2}’ passwd=grep ‘o{2}’ passwd
  • 检索出o出现2次的内容,使用egrep可以不使用脱义符 [root@linux7-128 grep]# egrep 'o{2}' passwd root:x:0:0:root:/root:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin setroubleshoot:x:992:989::/var/lib/setroubleshoot:/sbin/nologin huhu4:x:1008:1005::/hooome/nhnh:/bin/bash huhu5:x:1010:1009::/hoooome/huhu5:/bin/bash
  • egrep ‘(oo){2}’ passwd 检索出oo出现2次的内容 [root@linux7-128 grep]# egrep '(oo){2}' passwd huhu5:x:1010:1009::/hoooome/huhu5:/bin/bash
  • 表示前面字符的1次或n次 跟相比是他从1次开始,是从0次开始 grep ‘o+o’ passwd =egrep ‘o+o’ passwd [root@linux7-128 grep]# grep 'o+o' passwd root:x:0:0:root:/root:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin setroubleshoot:x:992:989::/var/lib/setroubleshoot:/sbin/nologin huhu4:x:1008:1005::/hooome/nhnh:/bin/bash huhu5:x:1010:1009::/hoooome/huhu5:/bin/bash
  • ‘?’表示?前面的字符重复次数为0或1次 [root@linux7-128 grep]# egrep 's?dw' passwd wdwwwww zxxsdww
  • | 表示或者,可以写多个 [root@linux7-128 grep]# egrep 'root|huhu' passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin huhu:x:1000:1000::/home/huhu:/bin/bash huhu1:x:1001:1001::/home/huhu1:/bin/bash huhu2:x:1005:1006::/home/huhu2:/bin/bash huhu3:x:1007:1005::/home/huhu3:/bin/bash huhu4:x:1008:1005::/hooome/nhnh:/bin/bash huhu5:x:1010:1009::/hoooome/huhu5:/bin/bash
  • ()表示一个组合 egrep ‘(oo){2}’ passwd 检索出oo出现2次的内容 [root@linux7-128 grep]# egrep '(oo){2}' passwd huhu5:x:1010:1009::/hoooome/huhu5:/bin/bash
  • sed sed和grep相比,sed也能实现grep的功能,但是有点麻烦,而且没有用颜色显示,强项在于替换。 匹配指定字符串 sed -n ‘/字符串/’p 文件 [root@linux7-128 sed]# sed -n '/root/'p passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
  • 使用、?、.、+、{}、|、^、…… [root@linux7-128 sed]# sed -n '/rt/'p passwd [root@linux7-128 sed]# sed -n '/r.t/'p passwd [root@linux7-128 sed]# sed -n '/^t/'p passwd
  • +、?号需要使用脱义符 [root@linux7-128 sed]# sed -n '/r+t/'p passwd [root@linux7-128 sed]# sed -n '/r\?t/'p passwd 或者使用sed -nr [root@linux7-128 sed]# sed -nr '/r+t/'p passwd [root@linux7-128 sed]# sed -nr '/r?t/'p passwd [root@linux7-128 sed]# sed -nr '/o{2}/'p passwd [root@linux7-128 sed]# sed -nr '/root|huhu/'p passwd
  • 打印指定行 打印第二行 [root@linux7-128 sed]# sed -n '2'p passwd bin:x:1:1:bin:/bin:/sbin/nologin 打印第二到第五行 [root@linux7-128 sed]# sed -n '2,5'p passwd 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
  • 打印第45到最后一行 [root@linux7-128 sed]# sed -n '45,$'p passwd huhu3:x:1007:1005::/home/huhu3:/bin/bash huhu4:x:1008:1005::/home/nhnh:/bin/bash huhu5:x:1010:1009::/home/huhu5:/bin/bash yang:x:1011:1011::/home/yang:/bin/bash nginx:x:989:984:Nginx web server:/var/lib/nginx:/sbin/nologin
  • sed -e 先匹配出第一行,在匹配出含有root字符串的行 [root@linux7-128 sed]# sed -e '1'p -e '/root/'p -n passwd root:x:0:0:root:/root:/bin/bash root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
  • 不区分大小写匹配 I [root@linux7-128 sed]# sed -n '/root/'Ip passwd root:x:0:0:root:/root:/bin/bash sdffgfBusvfgRoot operator:x:11:0:operator:/root:/sbin/nologin
  • 删除匹配行 sed -i 只是在屏幕上删除,显示剩余的行内容 [root@linux7-128 sed]# sed '1,45'd passwd huhu3:x:1007:1005::/home/huhu3:/bin/bash huhu4:x:1008:1005::/home/nhnh:/bin/bash huhu5:x:1010:1009::/home/huhu5:/bin/bash yang:x:1011:1011::/home/yang:/bin/bash nginx:x:989:984:Nginx web server:/var/lib/nginx:/sbin/nologin
  • 在文件里根据行数删除 [root@linux7-128 sed]# wc -l passwd 50 passwd [root@linux7-128 sed]# sed -i '1,45'd passwd [root@linux7-128 sed]# wc -l passwd 5 passwd 根据指定字符串删除 [root@linux7-128 sed]# sed -i '/yang/'d passwd
  • sed ‘1,10s/root/toor/g’ passwd 1-10行的root替换为toor 会把所有的内容打印出来 sed -r ‘1,10s/ro+/r/g’ passwd |head 把1-10行的ro+替换为r,即之前的root现在变为了rt [root@linux7-128 sed]# sed -r '1,10s/ro+/r/g' passwd |head rt:x:0:0:rt:/rt:/bin/bash sdffgfBusvfgRoot 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
  • sed -r ‘s/([^:]+):(.):([^:]+)/\3:\2:\1/’ 把第一段和最后一段调换位置 [root@linux7-128 sed]# head passwd |sed -r 's/([^:]+):(.):([^:]+)/\3:\2:\1/' /bin/bash:x:0:0:root:/root:root sdffgfBusvfgRoot /sbin/nologin:x:1:1:bin:/bin:bin /sbin/nologin:x:2:2:daemon:/sbin:daemon /sbin/nologin:x:3:4:adm:/var/adm:adm /sbin/nologin:x:4:7:lp:/var/spool/lpd:lp /bin/sync:x:5:0:sync:/sbin:sync /sbin/shutdown:x:6:0:shutdown:/sbin:shutdown /sbin/halt:x:7:0:halt:/sbin:halt /sbin/nologin:x:8:12:mail:/var/spool/mail:mail
  • [^:]+ : 非冒号,一个或多个 1 :(.*): :贪婪匹配,一直匹配到最后一个冒号 2 [^:]+ :非冒号,一个或多个 3 前面用小括号()括起来的,后面用反斜杠\数字去表示 替换内容时,有/,需要用\ [root@linux7-128 sed]# head passwd |sed 's/\/sbin\/nologin/123/g' root:x:0:0:root:/root:/bin/bash sdffgfBusvfgRoot bin:x:1:1:bin:/bin:123 daemon:x:2:2:daemon:/sbin:123 adm:x:3:4:adm:/var/adm:123 lp:x:4:7:lp:/var/spool/lpd:123 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:123
  • 或者使用@、#等替换分隔符 [root@linux7-128 sed]# head passwd |sed 's@/sbin/nologin@123@g' root:x:0:0:root:/root:/bin/bash sdffgfBusvfgRoot bin:x:1:1:bin:/bin:123 daemon:x:2:2:daemon:/sbin:123 adm:x:3:4:adm:/var/adm:123 lp:x:4:7:lp:/var/spool/lpd:123 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:123
  • 把英文字母全部删除,相当于替换为空 sed 's/[a-zA-Z]//g [root@linux7-128 sed]# head passwd |sed 's/[a-zA-Z]//g' ::0:0::/://

::1:1::/:// ::2:2::/:// ::3:4:://:// ::4:7::///:// ::5:0::/:// ::6:0::/:// ::7:0::/:// ::8:12::///://

  • 把所有行前面加一个字符串 sed -r 's/(.)/aaa:&/' &表示前面的小括号() [root@linux7-128 sed]# head passwd |sed -r 's/(.)/aaa:&/' aaa:root:x:0:0:root:/root:/bin/bash aaa:sdffgfBusvfgRoot aaa:bin:x:1:1:bin:/bin:/sbin/nologin aaa:daemon:x:2:2:daemon:/sbin:/sbin/nologin aaa:adm:x:3:4:adm:/var/adm:/sbin/nologin aaa:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin aaa:sync:x:5:0:sync:/sbin:/bin/sync aaa:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown aaa:halt:x:7:0:halt:/sbin:/sbin/halt aaa:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  • awk awk语法结构: awk -F ':' 'BEGIN{语句} {if(条件){语句1;语句2;语句3} } END{语句}' filename 示例 将passwd文件打印第一段 [root@linux7-128 awk]# awk -F ':' '{print $1}' passwd root bin daemon adm lp sync shutdown halt mail operator games ftp nobody ……… 将passwd文件打印所有段 $0表示所有,也可以将-F ‘:’去掉 awk -F ':' '{print $0}' passwd ==awk '{print $0}' passwd ==cat passwd [root@linux7-128 awk]# awk -F ':' '{print $0}' 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 ………..
  • 注意: 如果awk忽略了-F,默认将会以空格、空白字符为分隔符去打印
  • 打印多段 awk -F ‘:’ ‘{print [Math Processing Error]3,$5}’ passwd [root@linux7-128 awk]# awk -F ':' '{print $1,$3,$5}' passwd root 0 root bin 1 bin daemon 2 daemon adm 3 adm lp 4 lp sync 5 sync shutdown 6 shutdown halt 7 halt mail 8 mail ………
  • 指定字符分割,不用空格,例如使用# [root@linux7-128 awk]# awk -F ':' '{print $1"#"$3"#"$5}' passwd root#0#root bin#1#bin daemon#2#daemon adm#3#adm lp#4#lp sync#5#sync shutdown#6#shutdown halt#7#halt mail#8#mail operator#11#operator games#12#games ………..
  • 匹配含有oo的行 [root@linux7-128 awk]# awk '/oo/' passwd root:x:0:0:root:/root:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin setroubleshoot:x:992:989::/var/lib/setroubleshoot:/sbin/nologin
  • 匹配含有oo的第一段 [root@linux7-128 awk]# awk -F ':' '$1 ~ /oo/' passwd root:x:0:0:root:/root:/bin/bash setroubleshoot:x:992:989::/var/lib/setroubleshoot:/sbin/nologin
  • 支持正则 [root@linux7-128 awk]# awk -F ':' '$1 ~ /oo+/' passwd
  • 多个表达式一起写 awk -F ‘:’ ‘/root/ {print [Math Processing Error]3} /huhu/ {print [Math Processing Error]3}’ passwd == awk -F ‘:’ ‘/root|huhu/ {print [Math Processing Error]3}’ passwd [root@linux7-128 awk]# awk -F ':' '/root/ {print $1,$3} /huhu/ {print $1,$3}' passwd root 0 operator 11 huhu 1000 huhu1 1001 huhu2 1005 huhu3 1007 huhu4 1008 huhu5 1010
  • 数学符号 >、<、==、、、 第三段等于0的 [root@linux7-128 awk]# awk -F ':' '$3==0 {print $0}' passwd root:x:0:0:root:/root:/bin/bash 第三段大于1000的 [root@linux7-128 awk]# awk -F ':' '$3>=1000 {print $0}' passwd nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin huhu:x:1000:1000::/home/huhu:/bin/bash huhu1:x:1001:1001::/home/huhu1:/bin/bash huhu2:x:1005:1006::/home/huhu2:/bin/bash huhu3:x:1007:1005::/home/huhu3:/bin/bash huhu4:x:1008:1005::/home/nhnh:/bin/bash huhu5:x:1010:1009::/home/huhu5:/bin/bash yang:x:1011:1011::/home/yang:/bin/bash
  • 双引号的含义 [root@linux7-128 awk]# awk -F ':' '$3>="1000" {print $0}' passwd 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 ………… huhu:x:1000:1000::/home/huhu:/bin/bash huhu1:x:1001:1001::/home/huhu1:/bin/bash huhu2:x:1005:1006::/home/huhu2:/bin/bash huhu3:x:1007:1005::/home/huhu3:/bin/bash huhu4:x:1008:1005::/home/nhnh:/bin/bash huhu5:x:1010:1009::/home/huhu5:/bin/bash yang:x:1011:1011::/home/yang:/bin/bash nginx:x:989:984:Nginx web server:/var/lib/nginx:/sbin/nologin
  • 加上双引号”“之后,相当于sort不加-n。就代表1000不再是数字,而是一个字符串,是以ASSIC码计算的。 第七段的值不等于/sbin/nologin [root@linux7-128 awk]# awk -F ':' '$7!="/sbin/nologin" {print $0}' passwd root:x:0:0:root:/root:/bin/bash sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt huhu:x:1000:1000::/home/huhu:/bin/bash huhu1:x:1001:1001::/home/huhu1:/bin/bash huhu2:x:1005:1006::/home/huhu2:/bin/bash huhu3:x:1007:1005::/home/huhu3:/bin/bash huhu4:x:1008:1005::/home/nhnh:/bin/bash huhu5:x:1010:1009::/home/huhu5:/bin/bash yang:x:1011:1011::/home/yang:/bin/bas
  • 字段之间相互比较 字段3小于字段4的 [root@linux7-128 awk]# awk -F ':' '$3<$4 {print $0}' passwd adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin huhu2:x:1005:1006::/home/huhu2:/bin/bash
  • 字段3大于5并且小于7 &&,加上双引号之后是用ASSIC码比较的 [root@linux7-128 awk]# awk -F ':' '$3>"5" && $3<"7" {print $0}' passwd shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
  • 字段3大于950或者字段7等于/bin/bash || [root@linux7-128 awk]# awk -F ':' '$3>950 || $7=="/bin/bash" {print $0}' passwd root:x:0:0:root:/root:/bin/bash polkitd:x:999:997:User for polkitd:/:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin libstoragemgmt:x:997:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin unbound:x:995:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin colord:x:994:991:User for colord:/var/lib/colord:/sbin/nologin geoclue:x:993:990:User for geoclue:/var/lib/geoclue:/sbin/nologin setroubleshoot:x:992:989::/var/lib/setroubleshoot:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin sssd:x:991:986:User for sssd:/:/sbin/nologin gnome-initial-setup:x:990:985::/run/gnome-initial-setup/:/sbin/nologin huhu:x:1000:1000::/home/huhu:/bin/bash huhu1:x:1001:1001::/home/huhu1:/bin/bash huhu2:x:1005:1006::/home/huhu2:/bin/bash huhu3:x:1007:1005::/home/huhu3:/bin/bash huhu4:x:1008:1005::/home/nhnh:/bin/bash huhu5:x:1010:1009::/home/huhu5:/bin/bash yang:x:1011:1011::/home/yang:/bin/bash nginx:x:989:984:Nginx web server:/var/lib/nginx:/sbin/nologin OFS
  • 指定打印后的分隔符 [root@linux7-128 awk]# awk -F ':' '{OFS="#"} $3>1000|| $7=="/bin/bash" {print $1,$3,$7}' passwd root#0#/bin/bash nfsnobody#65534#/sbin/nologin huhu#1000#/bin/bash huhu1#1001#/bin/bash huhu2#1005#/bin/bash huhu3#1007#/bin/bash huhu4#1008#/bin/bash huhu5#1010#/bin/bash yang#1011#/bin/bash
  • 使用if嵌套规范写法: awk -F ':' '{OFS="#"} {if($3>1000|| $7=="/bin/bash") {print $1,$3,$7}}' passwd NR 表示行 awk -F ':' '{print NR":"$0}' passwd == grep -n ':' passwd
  • 打印前10行 [root@linux7-128 awk]# awk -F ':' 'NR<=10' 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 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin
  • 打印前十行并且第一段包含root或者sync的 [root@linux7-128 awk]# awk -F ':' 'NR<=10 && $1 ~ /root|sync/' passwd root:x:0:0:root:/root:/bin/bash sync:x:5:0:sync:/sbin:/bin/sync
  • NF 表示段 [root@linux7-128 awk]# awk -F ':' '{print NF":"$0}' passwd 6:rootx:0:0:root:/root:/bin/bash 7:bin:x:1:1:bin:/bin:/sbin/nologin 7:daemon:x:2:2:daemon:/sbin:/sbin/nologin 7:adm:x:3:4:adm:/var/adm:/sbin/nologin 7:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 7:sync:x:5:0:sync:/sbin:/bin/sync 7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 7:halt:x:7:0:halt:/sbin:/sbin/halt 7:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 7:operator:x:11:0:operator:/root:/sbin/nologin 7:games:x:12:100:games:/usr/games:/sbin/nologin 7:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 7:nobody:x:99:99:Nobody:/:/sbin/nologin ……..
  • 打印段数为6并且第一段包含root或者sync的的 [root@linux7-128 awk]# awk -F ':' 'NF==6 && $1 ~ /root|sync/' passwd rootx:0:0:root:/root:/bin/bash
  • =赋值,将前三行第一段赋值为root [root@linux7-128 awk]# head -n 3 passwd |awk -F ':' '$1="root"' root 0 0 root /root /bin/bash root x 1 1 bin /bin /sbin/nologin root x 2 2 daemon /sbin /sbin/nologin
  • 定义分割符为: [root@linux7-128 awk]# head -n 3 passwd |awk -F ':' '{OFS=":"} $1="root"' root:0:0:root:/root:/bin/bash root:x:1:1:bin:/bin:/sbin/nologin root:x:2:2:daemon:/sbin:/sbin/nologin
  • 求第三段所有值之和 [root@linux7-128 awk]# awk -F ':' '{tot=tot+$3}; END {print tot}' passwd 85271 [root@linux7-128 awk]# awk -F ':' '{(tot=tot+$3)}; END {print tot}' passwd 85271
  • 括号可以不加 拓展 把一个目录下,过滤所有.php文档中含有eval的行 grep -r --include=".php" 'eval' /data/ 练习题 http://www.apelearn.com/study_v2/chapter14.html

转载于:https://my.oschina.net/u/3912766/blog/1930711

2018.8.18日,直播笔记相关推荐

  1. 2018年7月18日日报

    姓名:任光烨 日期:2018年7月18日 今日学习任务: 1.自习Linux操作指令 2.将下列名单随机分组:分组要求,随机选择4个人组成一组 输出结果:4个人一行进行输出,每行代表一个组. 3.在v ...

  2. 【直播预告】7月18日3D游戏引擎免费公开课答疑,參与送C币!

    喜讯喜讯! 为了酬谢广大学员.CSDN学院特推出iOS和3D游戏引擎开发免费技术答疑公开课,让您度过一个充实的暑假~ 參与本次公开课,即有机会获得50C币! 答疑公开课时间:7月18日 晚7:30-9 ...

  3. 首届React开发者大会于2018年8月18日在广州举办

    web前端教程 用大白话,来讲编程 由w3ctech联合前端圈举办的中国首届React开发者大会将于2018年8月18日(下周六)在广州金逸影城太阳城店举办. 目前距离大会举办的时间只有10天啦,赶紧 ...

  4. 传熊猫直播进入破产清算 3月18日关闭服务器

    [TechWeb]3月6日消息,今日有消息称,熊猫直播已经进入破产清算,员工统一赔偿半个月工资,本月18日,熊猫直播将关闭服务器.对此,熊猫直播方面暂未做出回应. 去年开始,关于熊猫直播资金链紧张的消 ...

  5. 7月18日服务器维护时,2018年7月18日维护公告

    亲爱的玩家朋友: 为保证服务器的运行稳定和服务质量,<梦幻西游>手游所有服务器将于2018年7月18日8:00停机,进行维护工作.预计维护时间为8:00-9:00.如果在预定时间内无法完成 ...

  6. 用计算机创作艺术,4月18日酷逗直播:抽象的计算机艺术,编程还能这么玩~

    原标题:4月18日酷逗直播:抽象的计算机艺术,编程还能这么玩~ " 我一步一步地排除着曲线,直到我的作品最后只由直线和横线构成.形成诸十字形,各自互相分离地隔开--直线和横线是两相对立的力量 ...

  7. 怎么回事?网传熊猫直播本月申请破产?3月18日关停所有服务器

    据说熊猫直播平台本月会申请破产,3月18日关停所有服务器,而熊猫的主播如果不要之前的工资,可以随时联系超管解约!这是怎么回事?这还没到4月1日愚人节啊,小编都有点懵了-- 根据网友发来的消息,知名游戏 ...

  8. 熊猫直播诉斗鱼不正当竞争 案件将在3月18日开庭

    新浪科技讯 2月27日中午消息,据天眼查信息显示,熊猫直播主体公司上海熊猫互娱文化有限公司因不正当竞争纠纷将武汉斗鱼网络科技有限公司告上法庭.开庭日期为2019年3月18日. 据公开诉讼内容显示,诉讼 ...

  9. 导航狗IT周报-2018年05月18日

    原文链接:https://www.daohanggou.cn/2018/05/18/it-weekly-8/ DDoS专题 最近Web安全里的一个热点就是包括阮一峰博客在内的多个教育类IT网站被DDo ...

最新文章

  1. 关于Qt Designer程序/UI文件打开未响应的解决方法
  2. python读数据-python读取各种文件数据方法解析
  3. farbox editor是个好东西
  4. 知识点的积累(零碎的积累)
  5. 产品 电信nb接口调用_电信NB-IoT云平台数据对接方案——唐山平升电子技术开发有限公司...
  6. 用计算机自我介绍,计算机个人简历:计算机专业简历自我介绍【四篇】供参考使用(5页)-原创力文档...
  7. D - Sequence Swapping DP
  8. C/C++传递二维数组[转载]
  9. OutLook 2010 (Bata) 中的邮件导出功能
  10. shell下将文件中的分隔符从‘\t‘转换成‘,‘
  11. iOS网络开发(5)请求的缓存
  12. Windows性能计数器分析
  13. 我的电脑缩略图模式盘符名字不见了
  14. import java.sql.date_java.sql.Date日期比较
  15. sketch软件_Sketch制作交互流程图,哪种工具最高效?
  16. 方维P2P  二次开发
  17. 史上最详细清样/校样(Proof)处理流程--Hindawi(二)
  18. 见过世面的程序员,到底有多厉害
  19. 国际风筝节开幕 深圳大梅沙上演嫦娥奔月(图)
  20. LCD笔记(7)LCD驱动程序框架_配置时钟

热门文章

  1. C# 超级简单的Telnet (TcpClient)客户端
  2. 在IE浏览器中实现网页自动翻译
  3. python insertLink 链表前中后插入
  4. 科研中常用的计算机应用软件,研究生的日常软件(文献类软件使用介绍及心得)...
  5. 基于EP4CE10F17C8N芯片详解Altera Cyclone系列器件命名规则
  6. Elasticsearch 6.4 ingest-attachment对文件IK分词器全文检索
  7. 基于k210的水果分拣
  8. 为My97DatePicker日期插件设置默认日期
  9. 网站项目通过钉钉机器人向钉钉群发送信息
  10. Spring之AOP系列--指示器