Linux正则表达式及扩展表达式、egrep命令的说明

一、总结本此课程中所涉及命令的使用方法及相关示例展示;

chmod,chgrp,umask,chown,grep,egrep

二、总结基本正则表达式及扩展正则表达式

grep [OPTIONS] PATTERN [FILE...]:

选项:

--color=auto:对匹配到的串做高亮显示;\\可直接--color即为默认颜色

-v:显示模式匹配不到行;

-i: 忽略字符大小写;

-o: 仅显示能够被模式匹配到的串本行;

-q: 静默模式;

-E:使用扩展的正则表达式;

1、基本正则表达式元字符

.:匹配任意单个字符。

*:匹配其前面的字符任意次。

.*:表示任意长度的任意字符。

[]:指定范围内的任意单个字符。

[^]:指定字符之外的其他字符

X\{m,n\}:表示其前面的字符X至少出现m次,至多出现n次。

X\{m\}表示精确匹配m次。

注意:在基本正则表达式中前边要加转义字符\才能使用。

^:行首锚定符。

$:行尾锚定符。

\(\):分组引用;

\1:表示第一组括号中的内容;

\2表示第二组括号中的内容;依次类推。

\w:等价于[0-9A-Za-z]

\<, \b: 词首锚定;用于表示单词的模式的左侧;

\>, \b:词尾锚定;用于表示单词的模式的右侧;

^$: 空白行;

\?:0或1次;

\+:1或多次; 


扩展正则表达式的元字符和基本正则表达式的元字符基本相同。下面只介绍其不同之处:

\(\)变为只用()表示。

\{\}变为只用{ }表示。

+:表示匹配其前的字符至少一次。

|:或者的意思。例如a|b表示a或者b都行。

、显示/etc/passwd文件中以bash结尾的行

[root@localhost ~]# grep --color 'bash$' /etc/passwd
root:x:0:0:root:/root:/bin/bash
admin:x:500:500:admini:/home/admin:/bin/bash
centos:x:200:493::/home/database:/bin/bash
base:x:100:502:basee,shanghai,119,120:/home/base:/bin/bash
bash:x:501:504::/home/bash:/bin/bash
testbash:x:502:505::/home/testbash:/bin/bash
basher:x:503:506::/home/basher:/bin/bash

四、显示/etc/passwd文件中的两位数或三位数

[root@localhost ~]# grep --color '\b[[:digit:]]\{2,3\}\b' /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/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
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
admin:x:500:500:admini:/home/admin:/bin/bash
centos:x:200:493::/home/database:/bin/bash
base:x:100:502:basee,shanghai,119,120:/home/base:/bin/bash
bash:x:501:504::/home/bash:/bin/bash
testbash:x:502:505::/home/testbash:/bin/bash
basher:x:503:506::/home/basher:/bin/bash
nologin:x:504:507::/home/nologin:/sbin/nologin

五、显示`netstat -tan`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行

[root@localhost ~]# netstat -tan | grep --color 'LISTEN[[:space:]]*$'
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:42363               0.0.0.0:*                   LISTEN      
tcp        0      0 :::55885                    :::*                        LISTEN      
tcp        0      0 :::111                      :::*                        LISTEN      
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 ::1:631                     :::*                        LISTEN      
tcp        0      0 ::1:25                      :::*                        LISTEN

六、添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行

[root@localhost ~]# grep --color '^\(\b[[:alnum:]]\+\b\).*\1$' /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
bash:x:501:504::/home/bash:/bin/bash
nologin:x:504:507::/home/nologin:/sbin/nologin

七、显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)

[root@localhost ~]# cut -d: -f3,7 | egrep --color '^(\<root|centos|user1\>)' /etc/passwd
root:x:0:0:root:/root:/bin/bash
centos:x:200:493::/home/database:/bin/bash
user1:x:505:508::/home/user1:/bin/bash

八、找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行

[root@localhost ~]# grep --color '\<[[:alpha:]_]\+\>()' /etc/rc.d/init.d/functions
fstab_decode_str() {
checkpid() {
__readlink() {
__fgrep() {
__umount_loop() {
__umount_loopback_loop() {
__pids_var_run() {
__pids_pidof() {
daemon() {
killproc() {
pidfileofproc() {
pidofproc() {
status() {
echo_success() {
echo_failure() {
echo_passed() {
echo_warning() {
update_boot_stage() {
success() {
failure() {
passed() {
warning() {
action() {
action_silent() {
strstr() {
confirm() {
get_numeric_dev() {
is_ignored_file() {
is_true() {
is_false() {
apply_sysctl() {
key_is_random() {
find_crypto_mount_point() {
init_crypto() {

九、使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名

[root@localhost ~]# echo /var/test/path | egrep --color -o '[^/]+/?$'
path
[root@localhost ~]# echo /var/test/path | grep --color -o '.*/'
/var/test/

十、找出ifconfig命令执行结果中1-255之间的数字

[root@localhost ~]# ifconfig | egrep --color '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
eth0      Link encap:Ethernet  HWaddr 00:0C:29:C4:46:4D  
          inet addr:10.177.38.83  Bcast:10.177.38.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fec4:464d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX bytes:4794509 (4.5 MiB)  TX bytes:1112794 (1.0 MiB)
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0


你可能感兴趣的:(linux,color,表达式,课程)