《Centos系统——shell的三剑客》

    科技2022-08-07  118

    目录

    shell三剑客grep(全局搜索打印)sedawk

    shell三剑客

    grep(全局搜索打印)

    grep --help -----查看grep帮助信息 grep -n -----显示所在的行号 [root@localhost ~]# grep -n "root" /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin grep -c -----统计匹配到的行数 [root@localhost ~]# grep -c "root" /etc/passwd 2 grep -w -----精确匹配 [root@localhost ~]# grep -w "root" /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin grep -E -----正则匹配 [root@localhost ~]# grep -E "root|nginx" /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin nginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin grep -Eq -----静默模式,屏蔽输出 [root@localhost ~]# grep -Eq "root|nginx" /etc/passwd [root@localhost ~]# grep -i -----忽略大小写 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin nginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin grep -v -----反向输出,取反 [root@localhost ~]# grep -Ev "root|nginx" /etc/passwd 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 chrony:x:998:996::/var/lib/chrony:/sbin/nologin logstash:x:997:995:logstash:/usr/share/logstash:/sbin/nologin

    sed

    流编辑器,主要用来过滤和替换文本内容,增删改查

    p(print) -----打印(print) [root@localhost ~]# sed -n '/root/p' /etc/passwd -----匹配打印root的行 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin s -----替换字符串 g -----全局(global) sed 's/root/ROOT/g' /tmp/passwd|grep "ROOT" -----将root替换为ROOT ROOT:x:0:0:ROOT:/ROOT:/bin/bash operator:x:11:0:operator:/ROOT:/sbin/nologin [root@localhost ~]# seq 10 > a.txt [root@localhost ~]# cat a.txt 1 2 3 4 5 6 7 8 9 10 [root@localhost ~]# sed -n '1,2p' /root/a.txt -----显示第1-2行 1 2 3 4 5 6 7 8 9 10 k s a x z 3 w r s a [root@localhost ~]# sed -n '2,+2p' /root/a.txt -----显示从第二行开始,往下再来2行 k s a x z 3 w r s a 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 打印奇数行(1开始,2p是加2) [root@localhost ~]# sed -n '1~2p' a.txt 1 3 5 7 9 打印偶数行(1开始,2p是加2) [root@localhost ~]# sed -n '2~2p' a.txt 2 4 6 8 10 d(delete) -----删除 删除第一行的内容 [root@localhost ~]# sed '1d' a.txt 2 3 4 5 6 7 8 9 10 删除1-3行的内容 [root@localhost ~]# sed '1,3d' a.txt 4 5 6 7 8 9 10 删除空行 sed '/^$/d' a.txt a(append) -----在后面增加 [root@localhost ~]# sed '1a wu' a.txt -----在第1行后增加wu 1 wu 2 3 4 5 6 7 8 9 10 i(insert) -----在前面插入 [root@localhost ~]# sed '3i deng' a.txt -----在第3行前面插入deng 1 2 deng 3 4 5 6 7 8 9 10 ^ -----....开头 sed 's/^tom/jack/g' /tmp/passwd $ -----....结尾 sed 's/nologin$/jack/g' /tmp/passwd & -----表示前面匹配到的字符 sed 's/nologin$/&_wudengtian/g' /tmp/passwd -----将nologin结尾的替换为wudengtian c -----整行替换 [root@localhost ~]# sed '/root/chuazai007' /tmp/passwd -----匹配root行替换为huazai007 huazai007 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 w(write)-----将模式空间匹配的行,写入到指定文件 sed '/tom/w b.txt' /tmp/passwd -----将tom开头的行写入到b.txt文件中 [root@localhost ~]# cat b.txt -----查看文件 tom:x:1000:1000::/home/tom:/bin/bash tom:x:1000:1000::/home/tom:/bin/bash tom:x:1000:1000::/home/tom:/bin/bash r(read) -----读取 [root@localhost ~]# sed '2r b.txt' /tmp/passwd -----将b.txt添加到/tmp/passwd的第二行 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin tom:x:1000:1000::/home/tom:/bin/bash tom:x:1000:1000::/home/tom:/bin/bash tom:x:1000:1000::/home/tom:/bin/bash

    awk

    [root@localhost ~]# awk '/root/ {print}' /tmp/passwd 打印匹配root字段 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@localhost ~]# awk -F ':' '/root/ {print $5}' /tmp/passwd -----打印第5个字段 root operator [root@localhost ~]# awk -F ':' '/root/ {print $NF}' /tmp/passwd -----打印最后一个字段 /bin/bash /sbin/nologin [root@localhost ~]# awk -F ':' '/root/ {print $(NF-1)}' /tmp/passwd ------打印倒数第二个字段 /root /root [root@localhost ~]# awk 'NR==2 {print}' /tmp/passwd -----打印第2行 bin:x:1:1:bin:/bin:/sbin/nologin [root@localhost ~]# awk 'NR>3 {print}' a.txt -----打印第3行以后的 4 5 6 7 8 9 10 [root@localhost ~]# awk -F ':' '/tom/{print toupper($1)}' /tmp/passwd -----将tom小写变大写 TOM TOM TOM [root@localhost ~]# awk -F ':' '/tom/{print tolower($1)}' /tmp/passwd -----将tom大写变小写 tom tom tom
    Processed: 0.013, SQL: 8