文本查看
cat
查看文件的内容,常用选项:
- -E:查看行结束符$
- -n:对显出的每一行进行编号
- -A:显示所有控制符
- -b:对非空行编号
- -s:压缩连续的空行成一行
其兄弟命令tac,可以倒着查看文件,也就是从尾行开始查看
rev
将一行内容倒过来
[root@centos6 ~]# echo "1234567890" |rev
0987654321
more
分页查看文件,不支持man的快捷键
less
一页一页的查看文件,使用的时man的分页器,支持man的快捷键
head
从头部开始查看,默认显示前10行,常用选项:
- -c:指定获取前多少字节
- -n:指定获取前多少行
- -#:指定获取前#行
[root@centos6 ~]# head -n 3 /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
[root@centos6 ~]# head -3 /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
tail
从尾部开始查看,默认显示后10行,常用选项:
- -c:指定获取后多少字节
- -n:指定获取后多少行
- -#:指定获取后#行
- -f:跟踪文件描述符显示新追加的内容,常用于日志监控,--follow=descriptor
- -F:跟踪文件名,相当于--follow=name --retry
tailf
相当于tail -f -10,当文件不增长时不在访问文件,可以减少磁盘的IO
cut
显示文件或stdin数据的指定列,常用选项:
- -d delimiter:指定分隔符,默认是tab
- -f fileds:取去指定的列
- #:第#个列
- #,#,#:1,3,5列出135列
- #-#:3-6列出3456列
- -c:按字符分割
- --output-delimiter=string:指定输出分隔符
[root@centos6 ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@centos6 ~]# head -1 /etc/passwd |cut -d: -f1,3-6 --output-delimiter=/
root/0/0/root//root
[root@centos6 ~]# head -1 /etc/passwd |cut -c1-5
root:
paste
合并两个文件同行号的列到一行,常用选项:
- -d:指定分隔符,默认是tab
- -s:将文件多行变成一行
[root@centos6 app]# cat a
a
b
c
[root@centos6 app]# cat b
1
2
3
[root@centos6 app]# paste a b
a 1
b 2
c 3
[root@centos6 app]# paste -d : a b
a:1
b:2
c:3
[root@centos6 app]# paste -s a b
a b c
1 2 3
[root@centos6 app]# paste -s a
a b c
文本分析
wc
默认显示行数,字数(不包含符号),字节数和文件名,常用选项:
- -l:只计行数
- -w:只计单词数
- -c:只计字节数
- -m:只计字符数
- -L:显示文件中最长行的长度和文件名
[root@centos6 app]# cat a
nihao
helloword
[root@centos6 app]# cat a|wc
2 2 16
[root@centos6 app]# cat a
nihao
helloword
[root@centos6 app]# wc a
2 2 16 a
[root@centos6 app]# wc -L a
9 a
[root@centos6 app]# wc -L /etc/passwd
79 /etc/passwd
sort
把整理过的文本显示在stdout,不改变原始文件,默认排序方式受LC_COLLATE影响,按照UTF-8编码排序,可以使用export LC_COLLATE=C改为按照ASCII编码来排序,常用选项:
- -n:按数字大小排序
- -r:倒序
- -f:忽略字母大小写
- -u:删除输出中的重复行
- -t character:指定分隔符
- -k number:指定第几列
[root@centos6 app]# tail /etc/passwd|sort -t: -k3 -n
ntp:x:38:38::/etc/ntp:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
uniq
从输入中删除前后相接的重复的行,一般配合sort先排序一下,常用选项:
- -c:显示每行重复的次数
- -d:仅显示重复过的行
- -u:仅显示不重复的行
diff和patch
- diff file.old file.new:比较两个文件不同之处
- diff -u file.old dile.new > file.patch:导出补丁文件
- patch -b file.old file.patch:将补丁打入旧文件
[root@centos6 app]# cat a.old
nihao
helloword
[root@centos6 app]# cat a.new
nihao
5
2
[root@centos6 app]# diff a.old a.new
2c2,3
< helloword
---
> 5
> 2
[root@centos6 app]# diff -u a.old a.new > file.patch
[root@centos6 app]# ls
a.new a.old file.patch
[root@centos6 app]# patch -b a.old file.patch
patching file a.old
[root@centos6 app]# cat a.old
nihao
5
2
练习
-
查出用户UID最大值的用户名、UID及shell类型
[root@centos6 app]# cat /etc/passwd|sort -t: -k3 -n |tail -1 |cut -d: -f1,3,7 nfsnobody:65534:/sbin/nologin
-
查出/tmp的权限,以数字方式显示
[root@centos6 app]# stat /tmp/ File: `/tmp/' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: 802h/2050d Inode: 262145 Links: 21 Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-05-25 14:24:58.846543054 +0800 Modify: 2018-05-25 19:28:20.935536819 +0800 Change: 2018-05-25 19:28:20.935536819 +0800 [root@centos6 app]# stat /tmp/|head -4|tail -1|tr "(" /|cut -d/ -f2 1777
-
统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
[root@centos6 app]# cat /var/log/httpd/access_log |cut -d- -f1|sort |uniq -c |sort -t' ' -k1 -nr 14966 172.18.118.213 2246 172.18.118.190 8 172.18.118.140 2 172.18.118.147
网友评论