zoukankan      html  css  js  c++  java
  • 正则表达式

    配置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 ~]#

  • 相关阅读:
    iOS学习笔记10改用一些更新的API smallelephant_A
    iOS学习笔记2微博cell界面的实现 smallelephant_A
    iOS学习笔记12UISearchBar smallelephant_A
    iOS学习笔记8地图开发 smallelephant_A
    iOS学习笔记5GCD smallelephant_A
    ios学习笔记之1 通讯录应用练习 smallelephant_A
    iOS学习笔记11沙盒 smallelephant_A
    iOS学习笔记13字典数据写入plist smallelephant_A
    iOS学习笔记14sqlite数据库初探 smallelephant_A
    iOS学习笔记7NSURLSession smallelephant_A
  • 原文地址:https://www.cnblogs.com/jensenxie/p/7912412.html
Copyright © 2011-2022 走看看