常用的文本查看及处理命令
1、cat命令
(1)、作用
连接文件并打印到标准输出设备上,cat经常用来显示文件的内容。
(2)、用法
1):用法:cat (参数) 文件
2):常用参数 -n或-number:有1开始对所有输出的行数编号;
-b或--number-nonblank:和-n相似,只不过对于空白行不编号;
-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;
-A:显示不可打印字符,行尾显示“$”
-E:显示行结束符$
(3)、应用举例:
[root@localhost ~]# cat -n dayi123.txt #显示行号打印文件内容
1 hello world
2
3 end
[root@localhost ~]# cat -b dayi123.txt #对空白行不编号
1 hello world
2 end
[root@localhost ~]# cat -A dayi123.txt #打印隐藏字符
hello world$
$
end$
[root@localhost ~]# cat -An dayi123.txt #打印隐藏字符并显示行号
1 hello world$
2 $
3 end$
2、tac命令
(1)、作用
将文件的内容到过来看
(2)、用法
tac (参数) 文件
(3)、应用:
[root@localhost ~]# tac dayi123.txt
end
hello world
3、more命令
(1)、作用:分页查看文件内容,全屏幕的方式按页显示文本文件的内容,命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比
(2)、语法:more 文件
参数: -<数字>:指定每屏显示的行数;
-d:显示“[press space to continue,'q' to quit.]”和“[Press'h' for instructions]”;
-c:不进行滚屏操作。每次刷新这个屏幕;
-s:将多个空行压缩成一行显示;
-u:禁止下划线;
+<数字>:从指定数字的行开始显示。
(3)、常用的操作:
1)按Space键:显示文本的下一屏内容。 按Enier键:只显示文本的下一行内容。
2)按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
3)按H键:显示帮助屏,该屏上有相关的帮助信息。
4)B键:显示上一屏内容。 按Q键:退出rnore命令。
4、less命令
(1)作用:分页查看文件内容,less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键
(2)语法:less [参数] 文件
参数:-e:文件内容显示完毕后,自动退出;
-f:强制显示文件;
-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
-l:搜索时忽略大小写的差异;
-N:每一行行首显示行号;
-s:将连续多个空行压缩成一行显示;
-S:在单行显示较长的内容,而不换行显示;
-x<数字>:将TAB字符显示为指定个数的空格字符。
5、head命令
(1)作用:用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容
(2)语法:head [参数] 文件
参数:-n<数字>:指定显示头部内容的行数;
-c<字符数>:指定显示头部内容的字符数;
-v:总是显示文件名的头信息;
-q:不显示文件名的头信息。
(3)应用:
[root@localhost ~]# head -5 /etc/passwd #显示文件前十行
root:x:0:0:root,mgedu,123456,23456:/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
6、tail命令
(1)作用:用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行
(2)语法:tail文件
参数:-n或——line=:输出文件的尾部N(N位数字)行内容。
--help:显示指令的帮助信息;
(3)应用:
[root@localhost ~]# tail -5 /etc/passwd #显示文件倒数五行的内容
class:x:1003:1004:test:/home/class:/bin/sh
magedu:x:1004:1005::/home/magedu:/bin/bash
Test:x:1005:1007::/home/Test:/bin/bash
Program:x:1006:1008::/home/Program:/bin/bash
Operation:x:1007:1009::/home/Operation:/bin/bash
7、cut命令
(1)作用:用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,还可将两个或多个文件中的内容通过重定向输出到另一个文件中。
(2)语法:cut [选项] [参数]
常用选项:-b:仅显示行中指定直接范围的内容;
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
-n:与“-b”选项连用,不分割多字节字符;
--complement:补足被选择的字节、字符或字段;
--out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
(3)应用案例:
[root@localhost ~]# cut -d":" -f1,3,7 /etc/passwd | head -3
root:0:/bin/bash
bin:1:/sbin/nologin
daemon:2:/sbin/nologin
[root@localhost ~]# cut -d":" -f1,3,7 /etc/passwd | head -3 |cut -c 1-3
roo
bin
dae
8、wc命令
(1)作用:统计文件里的内容有多少行 多少个字节 字符
(2)语法:wc [选项] 文件
常用选项:wc -c filename:显示一个文件的字节数
wc -m filename:显示一个文件的字符数
wc -l filename:显示一个文件的行数
wc -L filename:显示一个文件中的最长行的长度
wc -w filename:显示一个文件的字数
(3)应用案例:
[root@localhost ~]# wc /etc/passwd #统计/etc/passwd文件中行数,字符数
32 55 1570 /etc/passwd
[root@localhost ~]# wc -l /etc/passwd #统计/etc/passwd文件中行数
32 /etc/passwd
[root@localhost ~]# wc -m /etc/passwd #统计/etc/passwd文件中字符数
1570 /etc/passwd
[root@localhost ~]# wc -w /etc/passwd #统计/etc/passwd文件中字数
55 /etc/passwd
9、sort命令
(1)作用:将文本文件内容加以排序
(2)语法:sort [选项] 文件
选项:-f 忽略大小写
-n 以数值类型进行排序,默认以文本内容进行排序
-r 反向排序
-t 指定分隔符
-k n{,m}:按照指定的字段范围排序,第n字段开始,第m字段结束
(3)应用举例:
[root@localhost ~]# sort /etc/passwd | head -3 #对/etc/passwd排序
adm:x:3:4:adm:/var/adm:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
[root@localhost ~]# sort -r /etc/passwd | head -3 #对/etc/passwd反向排序
wangcai:x:1001:1001::/home/wangcai:/bin/bash
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
Test:x:1005:1007::/home/Test:/bin/bash
#按/etc/passwd中的字段进行反向排序
[root@localhost ~]# sort -t ":" -k 3,3 /etc/passwd | head -3root:x:0:0:root,mgedu,123456,23456:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
dayi123:x:1000:1000::/home/dayi123:/bin/bash
#按/etc/passwd中的第三字段以数字进行反向排序
[root@localhost ~]# sort -n -t ":" -k 3,3 /etc/passwd | head -3
root:x:0:0:root,mgedu,123456,23456:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
10、uniq命令
(1)作用:用于检查及删除文本文件中重复出现的行列
(2)语法:uniq [选项] 文件
常用选项:-c或--count 在每列旁边显示该行重复出现的次数。
-d或--repeated 仅显示重复出现的行列。
-f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。
-s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。
-u或--unique 仅显示出一次的行列。
-w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。
[输入文件] 指定已排序好的文本文件。
[输出文件] 指定输出的文件。
(3)应用举例
#统计日志文件/var/log/access_log中出现的IP地址次数
[root@localhost ~]# awk -F " " '{print $1}' /var/log/access_log | uniq -c
4 172.16.254.253
4 172.16.0.100
12 172.16.253.11
1 172.16.254.252
8 172.16.253.11
5 172.16.252.210
1 172.16.254.252
11、diff命令
(1)作用:比较给定的两个文件的不同
(2)语法:diff [参数] 文件1 文件2
参数:-a或——text:diff预设只会逐行比较文本文件;
-b或--ignore-space-change:不检查空格字符的不同;
-B或--ignore-blank-lines:不检查空白行;
-c:显示全部内容,并标出不同之处;
-u,-U<列数>或--unified=<列数>:以合并的方式来显示文件内容的不同
(3)应用举例:
[root@localhost ~]# cat dayi.txt dayi123.txt #查看两个文件的内容
hello world
end
haha
hello world
end
[root@localhost ~]# diff dayi123.txt dayi.txt #比较两个文件的异同
3a4
> haha
12、文本查看命令综合应用
(1)统计日志中频繁访问的前10个IP
[root@localhost ~]# cat /var/log/access_log | cut -d" " -f1 | sort | uniq -c | sort -nr | head
29885 172.16.250.130
161 ::1
122 172.16.250.121
82 172.16.253.11
14 172.16.254.252
10 172.16.254.9
10 172.16.250.167
8 172.16.250.137
5 172.16.252.210
5 172.16.250.54
(2)查出分区空间使用率的最大百分比值
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 18G 987M 17G 6% /
devtmpfs 480M 0 480M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.7M 483M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 497M 118M 379M 24% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/sr0 7.3G 7.3G 0 100% /mnt/cdrom
[root@localhost ~]# df -h | awk '{print $5}' | sort -nr | head -1
100%
(3)查出用户UID最大值的用户名、UID及shell类型
[root@localhost ~]# cat /etc/passwd | sort -nr -t ":" -k 3,3 | head -1 | cut -d":" -f1,3,7
Operation:1007:/bin/bash
[root@localhost ~]# cat /etc/passwd | cut -d":" -f1,3,7 |sort -nr -t ":" -k 2,2 | head -1
Operation:1007:/bin/bash
(4)取出本机的IP地址
[root@dayi123 ~]# ifconfig eth0 | grep "inet addr" | cut -d":" -f2 | cut -d" " -f1
172.16.251.192
[root@dayi123 ~]# ifconfig eth0 | head -2 | tail -1 | awk '{print $2}' | cut -d":" -f2
172.16.251.192