Linux shell元字符扩展以及egrep fgrep grep的区别

? 该符号之前的字符出现0次或者一次 grep -E相当于 egrep只有这个才支持扩展的元字符

[root@oraclehost tmp]# cat aaa
helllllo
hello
helo
heo
ROOT
rot
rooooot
root
roat
roct
[root@oraclehost tmp]#  egrep "hel?o" aaa 
helo 匹配一次
heo 匹配0次


  • 该符号之前的字符出现至少一次 grep -E相当于 egrep只有这个才支持扩展的元字符
[root@oraclehost tmp]# egrep "hel+o" aaa
helllllo
hello
helo
[root@oraclehost tmp]# grep -E "hel+o" aaa
helllllo
hello
helo
[root@oraclehost tmp]#

()
|

grep选项详解
-c 显示出文件中匹配到的有哪些文件,文件中有有多少个匹配到

[root@oraclehost tmp]# grep -c root passwd aaa
passwd:3   passwd文件中匹配到了3次
aaa:1

-n 显示出文件中第几行有匹配到

[root@oraclehost tmp]# grep -n root passwd
1:root:x:0:0:root:/root:/bin/bash
2:<root>:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin

-v 显示不包含的

[root@oraclehost tmp]# grep -v root passwd  显示出passwd文件中不包含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
halt:x:7:0:halt:/sbin:/sbin/halt
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
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:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
mysql:x:1000:1000::/home/mysql:/bin/bash
oracle:x:1001:1001::/home/oracle:/bin/bash
vastbase:x:1002:1003::/home/vastbase:/bin/bash
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postgres:x:2000:2000::/home/postgres:/bin/bash
ntp:x:38:38::/etc/ntp:/sbin/nologin
atlasdb:x:998:996::/home/atlasdb:/bin/bash
haproxy:x:188:188:haproxy:/var/lib/haproxy:/sbin/nologin
geoclue:x:997:995:User for geoclue:/var/lib/geoclue:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
gluster:x:996:992:GlusterFS daemons:/run/gluster:/sbin/nologin
libstoragemgmt:x:995:991:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
unbound:x:994:990:Unbound DNS resolver:/etc/unbound:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
chrony:x:993:989::/var/lib/chrony:/sbin/nologin
saslauth:x:992:76:Saslauthd user:/run/saslauthd:/sbin/nologin
saned:x:991:988:SANE scanner daemon user:/usr/share/sane:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
colord:x:990:987:User for colord:/var/lib/colord:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
setroubleshoot:x:989:983::/var/lib/setroubleshoot:/sbin/nologin
sssd:x:988:982:User for sssd:/:/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
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:987:981::/run/gnome-initial-setup/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
grid:x:2001:2001::/home/grid:/bin/bash

-i 不区分大小写

[root@oraclehost tmp]# grep -i root aaa
ROOT
root

-h 不显示文件名,默认情况下会显示那个文件匹配到的行,-h不显示文件名,只显示匹配到字符的行

[root@oraclehost tmp]# grep root passwd  aaa
passwd:root:x:0:0:root:/root:/bin/bash
passwd:<root>:x:0:0:root:/root:/bin/bash
passwd:operator:x:11:0:operator:/root:/sbin/nologin
aaa:root
[root@oraclehost tmp]#
[root@oraclehost tmp]#
[root@oraclehost tmp]# grep -h root passwd  aaa
root:x:0:0:root:/root:/bin/bash
<root>:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
root

-l 只列出匹配到字符的文件名,不显示匹配到字符的行

[root@oraclehost tmp]# grep -l root passwd aaa
passwd
aaa

-s 不打印错误信息

[root@oraclehost tmp]# grep -s cdsacfd cdsd passwd
[root@oraclehost tmp]# grep  cdsacfd cdsd passwd
grep: cdsd: No such file or directory

grep,egrep,fgrep区别
grep支持基本正则表达式
egrep支持基本正则表达式和扩展正则表达式

[root@oraclehost tmp]# egrep "hel+o" aaa
helllllo
[root@oraclehost tmp]# egrep "ro?t" aaa
[root@oraclehost tmp]# egrep "ro+t" aaa
rooooot
root
[root@oraclehost tmp]# egrep "roo?t" aaa
root
[root@oraclehost tmp]#
[root@oraclehost tmp]#
[root@oraclehost tmp]# grep "roo?t" aaa

fgrep不支持整整表达式,会将输入的字符当做普通字符

posted @ 2022-09-16 10:17  南大仙  阅读(100)  评论(0)    收藏  举报