文本查看及文本处理工具
1、WC命令
1、作用:Print newline, word, and byte counts for each FILE, and a total line if more than one FILE is specified,统计行数,单词和字节,如果指定多个文件的话,统计总行数
2、格式:wc [OPTION]… [FILE]…
3、选项:
-l:lines -w:words 单词 -c:bytes 字节
4、示例:
[root@localhost ~]#wc /etc/fstab #从左往右,行数,单词书,字节数 16 84 899 /etc/fstab [root@localhost ~]#wc -c /etc/fstab #统计总字节数 899 /etc/fstab [root@localhost ~]#cat /etc/fstab |wc -l #这也是一种方法 16 [root@localhost ~]#wc /etc/fstab /etc/issue #如果指定多个文件的话,最后会显示总数 16 84 899 /etc/fstab 3 9 47 /etc/issue 19 93 946 total
2、cut命令
1、作用:文本文件按类型分切
2、格式:cut [OPTION]… [FILE]…
3、选项:
-d --delimiter:以指定字符为分隔符 -f --fields:挑选出的字段 -c --characters:挑选的字符段 #:指定的单个字段 #-#:连续的多个字段 #,#:离散的多个字段
选项和选项参数之间可以没有空格
4、示例:
[root@localhost ~]#cut -d : -f 1,3-5,7 /etc/passwd root:0:0:root:/bin/bash bin:1:1:bin:/sbin/nologin [root@localhost ~]#cut -c2-5 /etc/fstab #只将每一行的第2-5个字符取出来 UID= UID=
3、past:合并两个文件同行号的列到一行
i. paste [OPTION]… [FILE]…
1. -d –delimiters:分隔符,指定分隔符,默认用tab
2. -s –serial:所有行合成一行显示
3. # paste -d: /etc/passwd /etc/fstab
4. paste -s /etc/passwd /etc/fstab
4、sort:排序
1、作用:将文本文件中的行排序
2、格式:sort [OPTION]… [FILE]…
-n:--numeric-sort,基于数值大小而非字母进行排序 -t --field-separator:指定分隔符 -k #:用于排序比较的字段 -r:reverse,逆序排序 -f --ignore-case:忽略字符大小写 -u:--unique,重复的行只保留一份,重复行:连续且相同
3、示例
1)默认情况下排序是按照字母进行排序的,即1,2,10排序后为:1,10,2 先比较第一个字母如果相同,再比较第二个字母,然后排序
[root@localhost ~]#head /etc/passwd > abc [root@localhost ~]#cat abc 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 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin [root@localhost ~]#cut -d: -f3 abc 0 1 2 3 4 5 6 7 8 10 [root@localhost ~]#cut -d: -f3 abc | sort 0 1 10 2 3 4 5 6 7 8 [root@localhost ~]#cut -d: -f3 abc | sort -nr #如果想要按照数字进行排序,要加:-n选项 10 8 7 6 5 4 3 2 1 0 [root@localhost ~]#cat abc 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 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin [root@localhost ~]#sort -t: -k 4 abc #以:为分隔符,按第4个字段将整个文件进行排序 halt:x:7:0:halt:/sbin:/sbin/halt root:x:0:0:root:/root:/bin/bash shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown sync:x:5:0:sync:/sbin:/bin/sync mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin 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 #当要统计不重复的数据量有多少的时候 [root@localhost ~]# cat abc 3 2 2 5 4 6 3 5 4 4 2 2 [root@localhost ~]# sort -u abc #这种方式最简单 2 3 4 5 6 按照第三列将文件进行排序,数字,按照从大到小顺序,并且其他字段可以在同一行保留,很有用 [root@master ~]#cat abc 258189 1191 .46100 258189 4210 1.63000 258189 394 .15200 258189 1436 .55600 258189 0 0 258189 2418 .93600 258189 0 0 258189 1084 .41900 258189 56492 21.88000 258189 3639 1.40900 258189 206 .07900 258189 0 0 258189 1412 .54600 258189 0 0 258189 4 .00100 [root@master ~]#cat abc | sort -nr -k 3 258189 56492 21.88000 258189 4210 1.63000 258189 3639 1.40900 258189 2418 .93600 258189 1436 .55600 258189 1412 .54600 258189 1191 .46100 258189 1084 .41900 258189 394 .15200 258189 206 .07900 258189 4 .00100 258189 0 0 258189 0 0 258189 0 0 258189 0 0
5、uniq:报告或者移除重复的行,连续且完全相同表示为重复
1、格式:uniq [OPTION]… [INPUT [OUTPUT]]
2、选项
-c:count,显示每行重复的次数 -u:unique,仅显示未曾重复过的行,也就是说显示只出现一次的行,不相邻但是重复的行也显示
3、示例
[root@localhost ~]#cut -d: -f7 abc /bin/bash /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /bin/sync /sbin/shutdown /sbin/halt /sbin/nologin /sbin/nologin /bin/bash /sbin/nologin /sbin/nologin /sbin/nologin /sbin/nologin /bin/sync /sbin/shutdown /sbin/halt /sbin/nologin /sbin/nologin [root@localhost ~]#cut -d: -f7 abc | uniq -u #仅显示未重复的行,相邻的且重复的行才处理,不相邻但是重复的也会显示 /bin/bash /bin/sync /sbin/shutdown /sbin/halt /bin/bash /bin/sync /sbin/shutdown /sbin/halt [root@localhost ~]#cut -d: -f7 abc | uniq -c #这样即使相同的也不会统计为一次,而是相同且相邻的才会统计,为了相同的都统计,要先排序,将相同的都放在相邻的,再统计 1 /bin/bash 4 /sbin/nologin 1 /bin/sync 1 /sbin/shutdown 1 /sbin/halt 2 /sbin/nologin 1 /bin/bash 4 /sbin/nologin 1 /bin/sync 1 /sbin/shutdown 1 /sbin/halt 2 /sbin/nologin [root@localhost ~]#cut -d: -f7 abc | sort | uniq -c #这样统计的才是相同的总数 2 /bin/bash 2 /bin/sync 2 /sbin/halt 12 /sbin/nologin 2 /sbin/shutdown [root@localhost ~]#cut -d: -f7 abc | sort | uniq -c | sort #再次进行排序,这样才是最后的统计结果 12 /sbin/nologin 2 /bin/bash 2 /bin/sync 2 /sbin/halt 2 /sbin/shutdown
6、tr命令
1、作用:转换字符,tr – translate or delete characters
-c,--complement:取代所有不属于第一字符集的字符 -d,--delete:删除所有属于第一字符集的字符 -s,--squeeze-repeats:把连续重复的字符以单独一个字符表示 -t,--truncate-set1:先删除第一字符集较第二字符集多出的字符 -d,--delete:delete characters in SET1, do not translate
2、示例
[root@localhost ~]#echo aa.,a 1 b#$bb 2 c*/cc 3 ddd 4 | tr -d 'b#$c' #有引号中的字符就将其删除 aa.,a 1 2 */ 3 ddd 4 [root@localhost ~]#echo "thissss is a text linnnnnnne." | tr -s ' n' #将后面有的字符都替换为一个,注意引号里面有空格,空格也会被压缩 thissss is a text line. [root@localhost ~]#echo "thissss is a text linnnnnnne." | tr 'a-z' 'A-Z' #将文件里面出现的大写字母全部转换为小写字母 THISSSS IS A TEXT LINNNNNNNE.
7、练习
1、取出ip地址
[root@localhost ~]#ifconfig | head -2 | tail -1 inet addr:192.168.175.11 Bcast:192.168.175.255 Mask:255.255.255.0 [root@localhost ~]#ifconfig | head -2 | tail -1 | tr -s " " inet addr:192.168.175.11 Bcast:192.168.175.255 Mask:255.255.255.0 [root@localhost ~]#ifconfig | head -2 | tail -1 | tr -s " " | cut -d" " -f3 addr:192.168.175.11
2、查出分区空间使用率的最大百分比值
[root@localhost ~]#df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/sda2 ext4 48G 5.0G 41G 11% / tmpfs tmpfs 330M 224K 330M 1% /dev/shm /dev/sda1 ext4 190M 34M 147M 19% /boot /dev/sda3 ext4 29G 44M 28G 1% /test [root@localhost ~]#df | tr -s " " | cut -d" " -f5 Use% 11% 1% 19% 1% [root@localhost ~]#df | tr -s " " | cut -d" " -f5 | sort -n | tail -1 | tr -d "%" 19
3、查出用户UID最大值的用户名、UID及shell类型
cat /etc/passwd | sort -n -t : -k3 | cut -d : -f1,3,7 | tail -1
4、查出/tmp的权限,以数字方式显示
[root@localhost ~]#stat abc | head -4 | tail -1 | cut -d: -f2 | tr -cd '[:digit:]' 0644[root@localhost ~]# [root@localhost ~]#stat abc | head -4 | tail -1 | cut -d: -f2 (0644/-rw-r--r--) Uid
5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
[root@localhost ~]#netstat -nt Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 52 192.168.175.11:22 192.168.175.30:50854 ESTABLISHED tcp 0 0 192.168.175.11:59121 23.215.102.235:80 ESTABLISHED [root@localhost ~]#ss -nt | tail -n +3 | tr -s " " | cut -d" " -f5 | sort | uniq -c | sort -n -r 1 23.215.102.235:80 1 192.168.175.30:50854
–
–
–
评论前必须登录!
注册