6、常用文本处理命令

6.1 知识回顾

    做一件事

    2-3年:专家

    5年以上:权威

    操作系统功能

    运行程序,设备管理,软件管理,进程管理,网络管理

    目录管理:

        ls、cd、pwd、mkdir、rmdir、tree

    文件管理:

        touch、stat、file、rm、cp、mv、nano

    日期时间:

        date、clock、hwclock、cal

6.2 文本处理

6.2.1 查看文本:

cat、tac、more、less、head、tail

1、cat

连接并显示从首部到尾部(tac显示从尾部到首部)

    -n:显示行数

    -E:显示行结束符(linux行结束符号为$,windows行结束符号为enter+$)

    [root@Daniel-R480 ~]# cat calc.sh 

    #!/bin/bash

    #

    declare -i SUM=0

    for I in {1..100};do

        let SUM=$[$SUM+$I]

    done

    echo "The sum is : $SUM"

    [root@Daniel-R480 ~]# tac calc.sh 

    echo "The sum is : $SUM"

    done

        let SUM=$[$SUM+$I]

    for I in {1..100};do

    declare -i SUM=0

    #

    #!/bin/bash

    [root@Daniel-R480 ~]# cat -n calc.sh 

         1  #!/bin/bash

         2  #

         3  declare -i SUM=0

         4  for I in {1..100};do

         5      let SUM=$[$SUM+$I]

         6  done

         7  

         8  echo "The sum is : $SUM"

    [root@Daniel-R480 ~]# cat -E calc.sh 

    #!/bin/bash$

    #$

    declare -i SUM=0$

    for I in {1..100};do$

        let SUM=$[$SUM+$I]$

    done$

    $

    echo "The sum is : $SUM"$

Ctrl+c终止当前任务,或者终止当前输入命令的动作

shift + pageup/pagedown 来上下翻页

2、分屏显示:more、less file

    more: 向后翻(空格翻一页,enter翻一行)

    less(man里面用less来打开文本): k键向前翻

3、查看文本的前几行或者后几行(head tail)

    (1)head:查看前n行 

        [daniel@localhost ~]$ head -n 2 /etc/inittab 

        # inittab is no longer used when using systemd.

    (2)tail:查看后n行

        [daniel@localhost ~]$ tail -2 /etc/inittab 

        # systemctl set-default TARGET.target

    head,tail不加任何选项默认为10行

    tail -f: 查看文件尾部,不退出,等待显示后续追加至此文件的新内容;

6.2.2 文本处理:

cut、join、sed、awk

database:数据库(存放数据的库)

mysql:管理数据库的软件

关系型数据库:

表:二维表

文本文件:用:来分隔

Tom:23:male:2013/05/06

1、cut:

    -d: 指定字段分隔符,默认是空格

    -f: 指定要显示的字段

        -f 1,3

        -f 1-3

    [daniel@localhost ~]$ cut -d : -f1 /etc/passwd

    root

    bin

    daemon

    adm

    lp

2、sort(不影响源文件的次序,只影响现实的次序)

    sort:文本排序(默认不按数值大小排序)

        -n:数值排序

        -r: 降序

        -t: 字段分隔符

        -k: 以哪个字段为关键字进行排序

        -u: 排序后相同的行只显示一次

        -f: 排序时忽略字符大小写

    [daniel@localhost ~]$ sort -t : -k3 -n /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

    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

    tcpdump:x:72:72::/:/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

    chrony:x:998:996::/var/lib/chrony:/sbin/nologin

    polkitd:x:999:997:User for polkitd:/:/sbin/nologin

    daniel:x:1000:1000:daniel:/home/daniel:/bin/bash

3、uniq: 报告重复的行,或者是略过重复的行

        -c: 显示文件中行重复的次数

        -d: 只显示重复的行中的一个

        -D:显示重复的行的所有内容

        [daniel@localhost ~]$ uniq -d test

        78

        [daniel@localhost ~]$ uniq -D test

        78

        78

        [daniel@localhost ~]$ uniq -c test

              3 

              1 1212

              1 23

              1 4234

              1 324234

              1 3242

              1 123

              1 3444

              1 5656

              1 89

              2 78

4、wc文本统计

    wc (word count)输出为行数 单词数 字节数

        -l只显示行

        -w只显示单词数

        -c只显示字节

        -L最长的一行包含的字符数

    [daniel@localhost ~]$ wc /etc/fstab 

     12  60 541 /etc/fstab

    [daniel@localhost ~]$ wc -w /etc/fstab 

    60 /etc/fstab

    [daniel@localhost ~]$ wc -l /etc/fstab 

    12 /etc/fstab

    [daniel@localhost ~]$ wc -c /etc/fstab 

    541 /etc/fstab

    [daniel@localhost ~]$ wc -L /etc/fstab 

    93 /etc/fstab

5、tr-字符处理命令

    tr —— 转换或删除字符

    tr [OPTION]... SET1 [SET2]

    [daniel@localhost ~]$ tr 'ab' 'AB'

    abcd^H

    ABcd

    able

    ABle

    acount

    Acount

    [daniel@localhost ~]$ tr 'ab' 'AB' < /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

    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:997:User for polkitd:/:/sBin/nologin

    postfix:x:89:89::/vAr/spool/postfix:/sBin/nologin

    sshd:x:74:74:Privilege-sepArAted SSH:/vAr/empty/sshd:/sBin/nologin

    chrony:x:998:996::/vAr/liB/chrony:/sBin/nologin

    dAniel:x:1000:1000:dAniel:/home/dAniel:/Bin/BAsh

    tcpdump:x:72:72::/:/sBin/nologin

    [daniel@localhost ~]$ tr 'a-z' 'A-Z' < /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

    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:997:USER FOR POLKITD:/:/SBIN/NOLOGIN

    POSTFIX:X:89:89::/VAR/SPOOL/POSTFIX:/SBIN/NOLOGIN

    SSHD:X:74:74:PRIVILEGE-SEPARATED SSH:/VAR/EMPTY/SSHD:/SBIN/NOLOGIN

    CHRONY:X:998:996::/VAR/LIB/CHRONY:/SBIN/NOLOGIN

    DANIEL:X:1000:1000:DANIEL:/HOME/DANIEL:/BIN/BASH

    TCPDUMP:X:72:72::/:/SBIN/NOLOGIN

    tr -d: 删除出现在字符集中的所有字符

    [daniel@localhost ~]$ tr -d 'ab'

    abcd

    cd

    adsde

    dsde

Comments Closed.