|
6、常用文本处理命令
2021年07月01日 |
|
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 |