加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 22:23:44 所属栏目:百科 来源:网络整理
导读:一、命令总结 1、chmod:修改文件的用户权限 语法: chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --reference=RFILE FILE... 参数: -R:递归修改--reference=/path/to/somefilefile...chmod755file..

一、命令总结

1、chmod:修改文件的用户权限

语法:

chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...

参数:

-R:递归修改
--reference=/path/to/somefilefile...
chmod755file...
修改某类用户的某些权限:
u:属主
g:属组
o:其他
a:所有
chmod用户类别=MODE...
chmodu=rw,g=r/fiel...
修改某类的用户某位或某些位权限
chmod用户类别[-/+]MODEfiel...

示例1:修改/tmp/fstab文件的权限:属主为rwx,属组为rw,其他为rw

[root@node1~]#cp/etc/fstab/tmp/
[root@node1~]#ll/tmp/fstab
-rw-r--r--.1rootroot860Aug2808:21/tmp/fstab
[root@node1~]#chmod755/tmp/fstab
[root@node1~]#ll/tmp/fstab
-rwxr-xr-x.1rootroot860Aug2808:21/tmp/fstab
[root@node1~]#

示例2:修改/tmp/fstab文件的权限:删除属组和其他的执行权限

[root@node1~]#ll/tmp/fstab
-rwxr-xr-x.1rootroot860Aug2808:21/tmp/fstab
[root@node1~]#chmodgo-x/tmp/fstab
[root@node1~]#ll/tmp/fstab
-rwxr--r--.1rootroot860Aug2808:21/tmp/fstab
[root@node1~]#

2、chown:修改文件的属主、属组,只有管理员使用此命令

语法:

chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...

参数:

-R递归修改(修改目录及其内部文件的属主)
--reference=/path/to/somefilefile...把file的属主设定为与somefile的属主一样
chownUSERNAME:GRPNAMEfiel...同时改变属主和属组
chownUSERNAME,GRPNAMEfiel...同时改变属主和属组
chown:GROUPNAMEfiel...只修改属组

示例1:修改/tmp/fstab文件的属主和属组为centos用户

[root@node1tmp]#ll
total4
-rwxr--r--.1rootroot860Aug2808:21fstab
[root@node1tmp]#chowncentos:centos/tmp/fstab
[root@node1tmp]#ll
total4
-rwxr--r--.1centoscentos860Aug2808:21fstab
[root@node1tmp]#

示例2:修改/tmp/fstab文件的属组为root用户

[root@node1tmp]#ll
total4
-rwxr--r--.1centoscentos860Aug2808:21fstab
[root@node1tmp]#chown:root/tmp/fstab
[root@node1tmp]#ll
total4
-rwxr--r--.1centosroot860Aug2808:21fstab
[root@node1tmp]#

3、grep:基于正则表达式的文本过虑的工具

grep是一个支持正则表达式,基于正则表达式能够完成文本过虑的工具。根据用户指定的文本模式(正则表达元字符以及正常字符组合而成)对目标文件进行逐行搜索,显示能匹配到的行。

语法:

grep [OPTIONS] PATTERN [FILE...]

参数:

--color[=WHEN],--colour[=WHEN]-o:只显示被模式匹配到的内容

-i:ignore case,不区分字符大小写

-v:显示不能够被模式匹配到的行

-o:只显示被模式匹配的字符串

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

-A NUM:显示匹配行数的后NUM行

-B NUM:显示匹配行数的前NUM行

-C NUM:显示匹配行数的前后各NUM行


示例1:搜索有root的行,并语法作色

[root@node1~]#grep--color=auto"root"/etc/passwd#语法作色
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@node1~]#

示例2:引用变量搜索有root的行,并语法作色

[root@node1~]#user='root'
[root@node1~]#grep--color=auto"$user"/etc/passwd#变量替换需要加双引号
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@node1~]#

示例3:给grep临时添加别名grep,通过别名搜索有root的行,并语法作色

[root@node1~]#aliasgrep='grep--color=auto'#给grep添加别名
[root@node1~]#grep'root'/etc/passwd#不加--color=auto也可以匹配字符作色
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@node1~]#


二、正则表达式


基本正则表达式:REGular EXPression 简写:REGEXP

是由元字符及正常字符所书写的模式,其中的元字符不表示字符本身的意义,而是用于表达控制或通配等功能;


基本正则表达式元字符:

字符匹配:

.:匹配任意单个字符;

[]:匹配指定范围内的任意单个字符;

[^]:匹配指定范围内的任意单个字符;

[0-9]或[[:digit:]]:匹配任意单个数字;

[^0-9]或[^[:digit:]]:匹配非数字的单个字符;

[a-z]或[[:lower:]]:匹配任意单个小写字母;

[A-Z]或[[:upper:]]:匹配任意单个大写字母;

[0-9a-zA-Z]或[[:alnum:]]:匹配所有的字母或数字(区分大小写)

[a-zA-Z]或[[:alpha:]]:匹配所有的字母

[[:space:]]:匹配所有的空白符

[[:punct:]]:匹配所有的标点符

次数匹配:

在期望匹配字符后面提供一个控制符,用于表达匹配其前面字符指定的次数;

*:任意长度,前面的字符的任意长度,表示0次、1次或多次;

.*:任意长度的任意字符,工作于贪婪模式,尽可以长的去匹配;

?:匹配其前的字符0次或1次:表示其左侧字符可有可无;

+:1次或多次:表示其左侧字符必须要有1个,或表示其左侧字符至少出现1次;

{m}:m次:表示其左侧字符精确出现m次;

{m,n}:精确m次,至多n次:表示其左侧字符精确出现m次,最多出现n次;

位置锚定:

^:锚定行首 ^PATTERN

$:锚定行尾 PATTERN$

^PATTERN$:用模式来匹配整行;

^$:匹配纯空白行;

单词锚定:

由非特殊字符组成的连续的字符串;

&;:锚定词首,也可用b:&;PATTERN,或bPATTERN

&;:锚定词尾,也可以用b:PATTERN&;,或PATTERNb

&;PATTERN&;:匹配PATTERN能匹配到的整个单词

分组:()

注意:分组中的模式,在某次的具体匹配过程中所匹配到的字符,可以被grep记忆(保存于内置的变量中,这些变量是1,2,...),因此,还可以被引用;

1:引用,模式中自左而右,由第一个左括号以及与之对应的右括号中的模式所匹配到的内容;

2:引用,模式中自左而右,由第二个左括号以及与之对应的右括号中的模式所匹配到的内容;



扩展的正则表达式:

grep一般情况下支持基本正则表达式,可以通过参数-E支持扩展正则表达式,另外grep单独提供了一个扩展命令叫做egrep用来支持扩展正则表达式,这条命令和grep -E等价。虽然一般情况下,基本正则表达式就够用了。特殊情况下,复杂的扩展表达式,可以简化字符串的匹配。


grep:基本正则表达式

grep -E,egrep:扩展正则表达式

fgrep:fast,不支持使用正则表达式


扩展正则表达式就是在基本正则表达式的基础上,增加了一些元字符。

扩展正则表达式的元字符:


*:任意长度,前面的字符的任意长度,表示0次、1次或多次;


?:匹配其前的字符0次或1次:表示其左侧字符可有可无;

+:1次或多次:表示其左侧字符必须要有1个,或表示其左侧字符至少出现1次;

{m}:m次:表示其左侧字符精确出现m次;

{m,n}:精确m次,至多n次:表示其左侧字符精确出现m次,最多出现n次;




三、作业



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

[root@node1tmp]#grep"bash&;"/etc/passwd
root:x:0:0:root:/root:/bin/bash
duyong:x:500:500::/home/duyong/:/bin/bash
centos:x:501:502::/home/centos:/bin/bash
ubuntu:x:502:503::/home/ubuntu:/bin/bash
grid:x:498:498::/home/grid:/bin/bash
[root@node1tmp]#


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

[root@node1tmp]#grep"&;[0-9]{2,3}&;"/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:FTPUser:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtualconsolememoryowner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthduser:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin
duyong:x:500:500::/home/duyong/:/bin/bash
centos:x:501:502::/home/centos:/bin/bash
ubuntu:x:502:503::/home/ubuntu:/bin/bash
grid:x:498:498::/home/grid:/bin/bash
[root@node1tmp]#

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

[root@node1tmp]#netstat-tan|grep"LISTEN[[:space:]]*$"
tcp000.0.0.0:220.0.0.0:*LISTEN
tcp00127.0.0.1:250.0.0.0:*LISTEN
tcp00:::22:::*LISTEN
tcp00::1:25:::*LISTEN
[root@node1tmp]#

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


egrep用法


[root@node1~]#egrep"(&;[[:alnum:]]{4,8}&;).*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:503:504::/home/bash:/bin/bash
nologin:x:506:507::/home/nologin:/sbin/nologin
[root@node1~]#


grep用法

[root@node1~]#grep"(&;[[:alnum:]]{4,8}&;).*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:503:504::/home/bash:/bin/bash
nologin:x:506:507::/home/nologin:/sbin/nologin
[root@node1~]#


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

[root@node1~]#grep^"root|centos|user1"/etc/passwd|cut-d:-f1,3,7
root:0:/bin/bash
centos:501:/bin/bash
user1:507:/bin/bash
[root@node1~]#

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

[root@node1~]#grep"&;[[:alnum:]_].*[[:alnum:]].*&;()"/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(){
[root@node1~]#

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

[root@node1~]#echo/etc/sysconfig/network-scripts/ifcfg-eth0|egrep"[^/]*[/]"
/etc/sysconfig/network-scripts/ifcfg-eth0
[root@node1~]#
[root@node1~]#echo/etc/sysconfig/network-scripts/ifcfg-eth0|egrep"[^/].*[/]"|egrep"[^/]*$"/etc/sysconfig/network-scripts/ifcfg-eth0

wKioL1XkDa_BpRetAAEsMSy9CIw497.jpg

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

[root@node1~]#ifconfig|grep"&;[1-9]{1,3}&;"
eth0Linkencap:EthernetHWaddr00:0C:29:A2:3E:FC
inetaddr:192.168.1.112Bcast:192.168.1.255Mask:255.255.255.0
inet6addr:fe80::20c:29ff:fea2:3efc/64Scope:Link
UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1
RXbytes:87207171(83.1MiB)TXbytes:2464792(2.3MiB)
inetaddr:127.0.0.1Mask:255.0.0.0
inet6addr:::1/128Scope:Host
UPLOOPBACKRUNNINGMTU:65536Metric:1
[root@node1~]#

wKiom1XkC1fw3XsnAAG8KRt-6q0714.jpg

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读