正则表达式

配置ip

临时:

     Ifconfig eth0 1p/24

     route add default gw 网关地址

     /etc/resovl.conf------ànameserver dns的ip地址

     /etc/hosts  #本地解析-------》ip地址 域名

     Hostnamectl set-hostname 主机名

 

永久:

     /etc/sysconfig/network-scripts/ifcfg-网卡名

 

Onboot=yes

Bootproto=static

Ipaddr=ip地址

Netmark=255.255.255.0

Gateway=网关地址

DNS1=DNS的ip地址

DNS2=DNS的ip地址

 

Systemctl restart netmark

 

公钥:公共的密钥,所以要发出去

 

 正则表达式

grep是 文本操作符

 

正则表达式是用来从文本中提取对你有用的信息

[root@bogon ~]# /etc/profile

[root@bogon ~]# /etc/bashrc

[root@bogon ~]# /root/.bash_profile

[root@bogon ~]# /root/.bashrc

如果直接在[root@bogon ~]上写python,就是自带的,如果系统启动就能调用python3.6,就要在

vim /etc/profile下面加上:

PATH=/usr/local/python3.5.1/bin:$PATH

export PATH

 

我们现在登录的终端的shell,就是一个bash

由于老师在下面文件的前面加上echo ‘文件名’,所以加载什么文件都会显示

我们在正常的登录下,会加载/ect/profile,但是如果输入bash后,却不加载这个文件,但会加载

Bashrc写入固化的语句,就不受是否用bash登录影响了。

grep

 

-n  :显示行号
-o  :只显示匹配的内容
-q  :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容

-l  :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc 
-A  :如果匹配成功,则将匹配行及其后n行一起打印出来
-B  :如果匹配成功,则将匹配行及其前n行一起打印出来
-C  :如果匹配成功,则将匹配行及其前后n行一起打印出来
--color
-c  :如果匹配成功,则将匹配到的行数打印出来
-E  :等于egrep,扩展
-i  :忽略大小写

-v  :取反,不匹配
-w:匹配单词

 

[root@bogon ~]# cat /etc/passwd | grep "root"

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

[root@bogon ~]# grep root /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

[root@bogon ~]#

 

增加-n

[root@bogon ~]# grep -n 'root' /etc/passwd

1:root:x:0:0:root:/root:/bin/bash

10:operator:x:11:0:operator:/root:/sbin/nologin

[root@bogon ~]# grep -o 'root' /etc/passwd

root

root

root

root

-q不输出结果

[root@bogon ~]# grep -q 'root' /etc/passwd

[root@bogon ~]# echo $?

0

-l是文件名

 

[root@bogon ~]# grep -l 'root' /etc/passwd

/etc/passwd

[root@bogon ~]#

 

显示带root的下面两行(报错时,查error时有用)

 

[root@bogon ~]# grep -A 2 'root' /etc/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

--

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

 

显示带root的前面两行(报错时,查error时有用)

[root@bogon ~]# grep -B 2 'root' /etc/passwd

root:x:0:0:root:/root:/bin/bash

--

 

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@bogon ~]#

 

-C就是上下两行

 

[root@bogon ~]# grep -C 2 'root' /etc/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

--

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

[root@bogon ~]#

 

-c是count的意思,数行数

[root@bogon ~]# grep -c 'root' /etc/passwd

2

-i忽略大小写

[root@bogon ~]# cat 111.txt

hello

Hello

HELLO

123

1123

[root@bogon ~]# grep -i 'hello' 111.txt

hello

Hello

HELLO

[root@bogon ~]# grep 'hello' 111.txt

Hello

取不包含hello的

[root@bogon ~]# grep -iv 'hello' 111.txt

123

1123

 

只要root单词,用-w

[root@bogon ~]# cat 111.txt

hello

Hello

HELLO

123

1123

root123

root 123

root_123

root

[root@bogon ~]# grep -w 'root' 111.txt

root 123

root

带^root是指以root开头,nologin$是指nologin结尾

 

[root@bogon ~]# grep 'root' /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

[root@bogon ~]# grep '^root' /etc/passwd

root:x:0:0:root:/root:/bin/bash

[root@bogon ~]# grep 'nologin$' /etc/passwd

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

 

b与n中间隔着一个字符,任意一个字符

[root@bogon ~]# grep '^b.n' /etc/passwd

 

bin:x:1:1:bin:/bin:/sbin/nologin

[root@bogon ~]#

 

*代表左边那个字符出现0个或1个以上,之后可以任意字符

[root@bogon ~]# cat a.txt

a

ab

abb

abbb

abc

abcd

acd

cd

[root@bogon ~]# grep 'ab*' a.txt

a

ab

abb

abbb

abc

abcd

acd

 

+ 号代表以左边开头的全部字符,不能用grep,要用egrep或grep -E

egrep包含了grep的所有功能,所以不知道写哪个就写egrep

[root@bogon ~]# egrep 'ab+' a.txt

ab

abb

abbb

abc

abcd

[root@bogon ~]# egrep 'ab{2}' a.txt

abb

abbb

[root@bogon ~]#

只要abb,就要用$结尾了

[root@bogon ~]# egrep 'ab{2}$' a.txt

abb

[root@bogon ~]#

 

2-4个B

[root@bogon ~]# egrep 'ab{2,4}' a.txt

abb

abbb

大于等于2个B

[root@bogon ~]# egrep 'ab{2,}' a.txt

abb

abbb

 

[root@bogon ~]# egrep 'ab?' a.txt

a

ab

abb

abbb

abc

abcd

acd

解释egrep的命令

[root@bogon ~]# man egrep

 

只取中括号里面的一个

[root@bogon ~]# egrep 'r[abc123\-\/]t' a.txt

r1t

r2t

rat

\-必须要在结尾,否则匹配不到带-的

[root@bogon ~]# egrep 'r[abc123\-\/]t' a.txt

r1t

r2t

rat

r/t

[root@bogon ~]# egrep 'r[abc123\/\-]t' a.txt

r1t

r2t

rat

r-t

r/t

[root@bogon ~]#

 

点是任意一个的意思

[root@bogon ~]# egrep 'r.t' a.txt

rot

r1t

r2t

rat

r-t

r/t

?是一个或多个

[root@bogon ~]# egrep 'r?t' a.txt

root

rot

roooot

r1t

r2t

rat

raat

r-t

r/t

[root@bogon ~]#

[a-z]内只匹配小a到小z

[root@bogon ~]# egrep 'r[a-z]t' a.txt

rot

rat

[root@bogon ~]# egrep 'r[a-zA-Z]t' a.txt

rot

rat

[root@bogon ~]# egrep 'r[a-Z]t' a.txt

rot

rat

[root@bogon ~]#

中间可以有很多在数字

[root@bogon ~]# egrep 'r[0-9]+t' a.txt

r1t

r2t

r23456789t

[root@bogon ~]#

 

中间有两个数字的:

[root@bogon ~]# egrep 'r[0-9]{2}t' a.txt

r99t

[root@bogon ~]#

^以什么开头

[root@bogon ~]# egrep '^r' a.txt

root

rot

roooot

r1t

r2t

rat

raat

r-t

r/t

r23456789t

r99t

[root@bogon ~]#

 

[root@bogon ~]# egrep '^[0-9]' a.txt

[^0-9]当^在中括号内就取反

[root@bogon ~]# egrep '^[^0-9]' a.txt

a

ab

abb

abbb

abc

abcd

acd

cd

abbbbbbbb

root

rot

roooot

r1t

r2t

rat

raat

r-t

r/t

r23456789t

r99t

[root@bogon ~]#

 

包含abb或abc的命令:

[root@bogon ~]# egrep 'ab(b|c)' a.txt

abb

abbb

abc

abcd

abbbbbbbb

[root@bogon ~]#

这样也行

[root@bogon ~]# egrep -e 'abc' -e 'abb' a.txt

abb

abbb

abc

abcd

abbbbbbbb

[root@bogon ~]#

 

通配符与正则表达式

通配符:提高操作效率

touch {a..c}.txt

正则表达式:

^行首

$行尾

*前面字符的0个或多个

.单个字符

上图中x\{m,\}中,\是为了解释{,只是在grep才需要,在egrep是不需要\的

 

[root@bogon ~]# egrep 'ab{1}' a.txt

ab

abb

abbb

abc

abcd

abbbbbbbb

[root@bogon ~]# egrep 'ab{1,3}' a.txt

ab

abb

abbb

abc

abcd

abbbbbbbb

[root@bogon ~]# egrep 'ab{1,}' a.txt

ab

abb

abbb

abc

abcd

abbbbbbbb

[root@bogon ~]#

 sed流编辑器,是以行为单位的处理程序(定指或命令)

[root@bogon ~]# head -10 /etc/passwd > b.txt

[root@bogon ~]# cat b.txt

输出b.txt所有记录

 

[root@bogon ~]# sed '' b.txt

不打印输出结果用-n(静默模式)

[root@bogon ~]# sed -n '' b.txt

可以指定多个规则,跟egrep一样

[root@bogon ~]# sed -e '' b.txt

-i如果'' 内没有内容的话,就是打印出来,否则就会直接修改文件

[root@bogon ~]# sed -i c b.txt

删除第3行,打印出来,不是真的删除了,文件本身没修改

[root@bogon ~]# sed '3d' b.txt

 

第3行打印一次,然后继续输出第4行等

[root@bogon ~]# sed '3p' b.txt

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/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

 

只打印第3行 p=print

[root@bogon ~]# sed -n '3p' b.txt

daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@bogon ~]#

 

第3行改为111,打印出来(文件没有真的修改)c=change

[root@bogon ~]# sed '3c 111' b.txt

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

111

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@bogon ~]#

 

3a就是追加的意思,在第3行后追加一行

 

[root@bogon ~]# sed '3a 111' b.txt

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

111

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@bogon ~]#

 

posted @ 2017-11-28 22:03  森森2017  阅读(704)  评论(0编辑  收藏  举报