zoukankan      html  css  js  c++  java
  • 第十一章 常用文字字符串处理命令

    一、sort       #排序 将不相同的行进行排序在一起 默认是根据第一列进行排序 默认是以空白字符为分割符 

              #默认以字母进行排序


    选项:

    -k          #指定哪一列为分隔符

    -n         #以数值大小的方式进行排序

    -r          #倒叙排序

    -t         #指定分割符

    cat>sort.txt<<EOF
    b 5
    c 3
    a 11
    f 2
    d 9
    EOF

     

    [root@jindada ~]# cat sort.txt
    b 5
    c 3
    a 11
    f 2
    d 9
    [root@jindada ~]# sort sort.txt
    a 11
    b 5
    c 3
    d 9
    f 2

    [root@jindada ~]# sort -k2 sort.txt
    a 11
    f 2
    c 3
    b 5
    d 9
    [root@jindada ~]# sort -nk2 sort.txt
    f 2
    c 3
    b 5
    d 9
    a 11

    [root@jindada ~]# sort -rnk2 sort.txt
    a 11
    d 9
    b 5
    c 3
    f 2


    [root@jindada ~]# cp /etc/passwd ./
    [root@jindada ~]# cat 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
    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
    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


    [root@jindada ~]# sort -t ":" -nk3 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
    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
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    polkitd:x:999:998:User for polkitd:/:/sbin/nologin


    cat>file.txt<<EOF
    123
    abc
    123
    edf
    456
    123
    abc
    EOF


    [root@jindada ~]# cat file.txt
    123
    abc
    123
    edf
    456
    123
    abc

    [root@jindada ~]# sort file.txt
    123
    123
    123
    456
    abc
    abc
    edf

    二、uniq          #去重 去除重复的行 只能去除相同相邻的行 统计 将重复的行的次数统计出来 跟sort结合使用


    |              #管道 将前面命令的执行结果交给后面的命令继续执行 操作的是数据


    选项:

    -c            #统计重复的行的次数

    [root@jindada ~]# sort file.txt
    123
    123
    123
    456
    abc
    abc
    edf

    [root@jindada ~]# sort file.txt | uniq
    123
    456
    abc
    edf

    [root@jindada ~]# sort file.txt | uniq -c
    3 123
    1 456
    2 abc
    1 edf


    [root@jindada ~]# sort file.txt | uniq -c | sort
    1 456
    1 edf
    2 abc
    3 123
    [root@jindada ~]# sort file.txt | uniq -c | sort -n
    1 456
    1 edf
    2 abc
    3 123
    [root@jindada ~]# sort file.txt | uniq -c | sort -rn
    3 123
    2 abc
    1 edf
    1 456

    三、cut          #取列 awk命令的小弟 默认的分隔符为tab键

    选项:

    -d            #指定分隔符

    -f            #取出指定的列

    -c            #取出指定的字符 按照行进行处理的

    [root@jindada ~]# echo "root:x:0:0:root:/root:/bin/bash" >test.txt
    [root@jindada ~]# cat test.txt
    root:x:0:0:root:/root:/bin/bash

    #取出第七列
    [root@jindada ~]# cut -d ":" -f7 test.txt
    /bin/bash

    #取出第一列和第七列
    [root@jindada ~]# cut -d ":" -f1,7 test.txt
    root:/bin/bash

    #取出第五列到第七列
    [root@jindada ~]# cut -d ":" -f5-7 test.txt
    root:/root:/bin/bash

    [root@jindada ~]# cut -d ":" -f7 passwd
    /bin/bash
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /bin/sync
    /sbin/shutdown
    /sbin/halt
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    [root@jindada ~]# cut -d ":" -f7 passwd | sort
    /bin/bash
    /bin/sync
    /sbin/halt
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/nologin
    /sbin/shutdown
    [root@jindada ~]# cut -d ":" -f7 passwd | sort | uniq
    /bin/bash
    /bin/sync
    /sbin/halt
    /sbin/nologin
    /sbin/shutdown
    [root@jindada ~]# cut -d ":" -f7 passwd | sort | uniq -c
    1 /bin/bash
    1 /bin/sync
    1 /sbin/halt
    14 /sbin/nologin
    1 /sbin/shutdown
    [root@jindada ~]# cut -d ":" -f7 passwd | sort | uniq -c | sort -n
    1 /bin/bash
    1 /bin/sync
    1 /sbin/halt
    1 /sbin/shutdown
    14 /sbin/nologin
    [root@jindada ~]# cut -d ":" -f7 passwd | sort | uniq -c | sort -rn
    14 /sbin/nologin
    1 /sbin/shutdown
    1 /sbin/halt
    1 /bin/sync
    1 /bin/bash


    [root@jindada ~]# cat test.txt
    root:x:0:0:root:/root:/bin/bash
    [root@jindada ~]# cut -c 6 test.txt
    x
    [root@jindada ~]# cut -c 6 passwd
    x
    :
    n
    :
    4
    x
    o
    x
    x
    t
    #取出不同的字符
    [root@jindada ~]# cut -c 6,8 test.txt
    x0

    #取出连续的字符
    [root@jindada ~]# cut -c 1-4 test.txt
    root


    #取出系统eth0的IP地址

    [root@jindada ~]# yum install -y net-tools

    [root@jindada ~]# ifconfig eth0
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
    inet6 fe80::3310:9d15:9ee4:43e8 prefixlen 64 scopeid 0x20<link>
    ether 00:0c:29:eb:ea:8d txqueuelen 1000 (Ethernet)
    RX packets 1634 bytes 464970 (454.0 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 1033 bytes 114568 (111.8 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    [root@jindada ~]# ifconfig eth0 | head -2
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
    [root@jindada ~]# ifconfig eth0 | head -2 | tail -1
    inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
    [root@jindada ~]# ifconfig eth0 | head -2 | tail -1 | cut -d " " -f10
    10.0.0.100

     

    [root@jindada ~]# ip a s eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
    valid_lft forever preferred_lft forever
    inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute
    valid_lft forever preferred_lft forever
    [root@jindada ~]# ip a s eth0 | head -3
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
    [root@jindada ~]# ip a s eth0 | head -3 | tail -1
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
    [root@jindada ~]# ip a s eth0 | head -3 | tail -1 | cut -c 10-19
    10.0.0.100

     

    [root@jindada ~]# ip a s eth0 | head -3 | tail -1
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
    [root@jindada ~]# ip a s eth0 | head -3 | tail -1 | cut -d " " -f6
    10.0.0.100/24
    [root@jindada ~]# ip a s eth0 | head -3 | tail -1 | cut -d " " -f6 | cut -d "/" -f1
    10.0.0.100

    四、tr         #替换 删除 sed的小弟 只能单对单的替换

    选项:

    -d           #删除指定的字符

    语法:

    tr old new    < file


    <            #标准输入重定向


    [root@jindada ~]# cat test.txt
    root:x:0:0:root:/root:/bin/bash

    [root@jindada ~]# tr "0" "9" < test.txt
    root:x:9:9:root:/root:/bin/bash

    [root@jindada ~]# tr -d "o" < test.txt
    rt:x:0:0:rt:/rt:/bin/bash
    [root@jindada ~]#


    [root@jindada ~]# ip a s eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
    valid_lft forever preferred_lft forever
    inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute
    valid_lft forever preferred_lft forever
    [root@jindada ~]# ip a s eth0 | head -3 | tail -1
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
    [root@jindada ~]# ip a s eth0 | head -3 | tail -1 | tr '/' ' '
    inet 10.0.0.100 24 brd 10.0.0.255 scope global noprefixroute eth0
    [root@jindada ~]# ip a s eth0 | head -3 | tail -1 | tr '/' ' ' | cut -d " " -f6
    10.0.0.100

    五、wc          #统计 行数 字节数 列数 行的长度

    选项:

    -l              #统计行数

    -w              #统计列数,默认以空白字符为分隔符

    -c              #统计字节数

    -L              #统计文件中最长的行的长度


    [root@jindada ~]# wc passwd
    18 26 798 passwd
    [root@jindada ~]# wc -l passwd
    18 passwd
    [root@jindada ~]# cat /etc/hosts
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    [root@jindada ~]# wc /etc/hosts
    2 10 158 /etc/hosts
    [root@jindada ~]# wc -w /etc/hosts
    10 /etc/hosts
    [root@jindada ~]# ll passwd
    -rw-r--r--. 1 root root 798 Jul 13 16:49 passwd
    [root@jindada ~]# ll /etc/hosts
    -rw-r--r--. 1 root root 158 Jun 7 2013 /etc/hosts
    [root@jindada ~]# wc -c /etc/hosts
    158 /etc/hosts
    [root@jindada ~]# wc -c passwd
    798 passwd
    [root@jindada ~]#


    [root@jindada ~]# wc -L passwd
    68 passwd
    [root@jindada ~]# cat /etc/hosts
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    [root@jindada ~]# wc -L /etc/hosts
    78 /etc/hosts


    [root@jindada ~]# name=ewuighrtuighwiorteugh
    [root@jindada ~]# echo $name
    ewuighrtuighwiorteugh
    [root@jindada ~]# echo $name | wc -L
    21

  • 相关阅读:
    html 上传图片前预览
    php获取当月天数及当月第一天及最后一天、上月第一天及最后一天实现方法
    php 计算 pdf文件页数
    php 获取半年内每个月的订单数量, 总价, 月份
    php 获取两个数组之间不同的值
    小程序支付功能
    关于nginx的Job for nginx.service failed because the control process exited with error code.错误
    linux 安装 Apollo
    MongoDB待续。。。
    ABP vNext...待续
  • 原文地址:https://www.cnblogs.com/jhno1/p/13295600.html
Copyright © 2011-2022 走看看