查看文本文件内容常用命令: cat ,more,less
文件截取:head,tail
按列抽取:cut
排序和统计:sort,wc
按关键字抽取:grep
cat命令
cat [OPTION]... [FILE]...
-E:显示行结束符$
-n:对显示出的每一行进行编号
-A:显示所有控制符
-b:非空行编号
-s:压缩连续的空行成一行
示例:
cat f1.txt 查看文件
cat –E f1.txt 显示内容行结束符号:$
cat –n f1.txt 显示行号,空行也计入行数编号
cat –b f1.txt 显示行号,但空行不计入行数编号
cat –s f1.txt 压缩空行,把多个连续的空行压缩成一行
实现多行输出保存到文件
cat > f1.txt << EOF
>aaaaaaaaaa
>bbbbbbbbb
>ccccccccccc
>EOF
tac命令
反向显示文件内容,即文件首尾倒转
tac f1.txt 文件显示方向与cat f1.txt相反
rev命令
把文件的每一行中的字符串的首尾反向显示
nl命令
查看文件并显示行号,空行不计入行数编号
nl f1.txt 功能与cat –b f1.txt 类似
more命令
more:分页查看文件内容
more [OPTIONS...] FILE...
-d: 显示翻页及退出提示
less命令
less:一页一页地查看文件或STDIN输出
查看时有用的命令包括:
/string: 搜索指定的string
n/N: 跳到下一个或上一个匹配
less 命令是man命令使用的分页器
head命令
显示文件从开头起的某些行,默认显示开头10行
head [OPTION]... [FILE]...
-c # 指定获取前#字节
-n # 指定获取前#行
-# 指定行数
tail命令
显示文件从结尾起的某些行,默认显示文件倒数的前10行
tail [OPTION]... [FILE]...
-c #: 指定获取后#字节
-n #: 指定获取后#行
-#: 同上
-f: 跟踪显示文件fd新追加的内容,常用日志监控相当于 --follow=descriptor
-F: 跟踪文件名,相当于--follow=name –retry
tailf 类似tail –f,当文件不增长时并不访问文件
示例:
tail -f /var/log/message 可以跟踪查看日志,只要有新的数据添加到文件就会自动显示出来
cut命令
按列抽取文本
cut [OPTION]... [FILE]...
-d DELIMITER: 指明分隔符,默认tab
-f FILEDS:
#: 第#个字段
#,#[,#]:离散的多个字段,例如1,3,6
#-#:连续的多个字段, 例如1-6
混合使用:1-3,7
-c:按字符切割
--output-delimiter=STRING指定输出分隔符
显示文件或STDIN数据的指定列
cut -d: -f1,3,7 /etc/passwd 将文本中的每行以”:”为分隔符分割,获取1、3、7行,并显示
cut /etc/passwd | cut -d: -f3,7 功能与上面的一样
cut -c2-5 /usr/share/dict/words 截取每行的第2至第5个字符
paste命令
合并两个文件同行号的列到一行
paste [OPTION]... [FILE]...
-d 分隔符:指定分隔符,默认用TAB
-s : 所有行合成一行显示
示例:
paste f1 f2
paste -s f1 f2
wc命令
收集文本统计数据,计数单词总数、行总数、字节总数和字符总数
可以对文件或STDIN中的数据运行
wc story.txt
39 237 1901 story.txt
行数 字数 字节数
常用选项:
-l: 只计数行数
-w: 只计数单词总数
-c: 只计数字节总数
-m: 只计数字符总数
-L: 显示文件中最长行的长度
示例
ls -al /etc | wc -l 计算有多少行
sort命令
文本排序sort,把整理过的文本显示在STDOUT,不改变原始文件
sort [options] file(s)
常用选项:
-r: 执行反方向(由上至下)整理
-R: 随机排序
-n: 执行按数字大小整理
-f: 选项忽略(fold)字符串中的字符大小写
-u: 选项(独特,unique)删除输出中的重复行
-t c: 选项使用c做为字段界定符
-k X: 选项按照使用c字符分隔的X列来整理能够使用多次
示例:
cut -d: -f1,3,7 /etc/passwd | sort -t: -k 2 -nr #获取passwd中的用户名,UID,默认shell,使用sort进行排序,排序规则是使用:为界定符,选取第2列按照数字从大到小进行排序
seq 100 | sort -R 随机排序
uniq命令
uniq命令:从输入中删除前后相接的重复的行
uniq [OPTION]... [FILE]...
-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行,注:连续且完全相同方为重复
常和sort 命令一起配合使用:
sort userlist.txt | uniq -c
diff命令
比较两个文件之间的区别
diff foo.conf foo2.conf
5c5
< use_widgets = no
…
> use_widgets = yes
注明第5行有区别(改变)
diff命令的输出被保存在一种叫做“补丁”的文件中
使用-u选项来输出”统一的(unified)”diff格式文件,最适用于补丁文件
patch 复制在其它文件中进行的改变(要谨慎使用)
适用-b选项来自动备份改变了的文件
diff -u foo.conf foo2.conf > foo.patch
patch -b foo.conf foo.patch
练习
1、找出ifconfig “网卡名”命令结果中本机的IPv4地址
答:ifconfig eth0 | head -n2 | tail -n1 | tr -s ‘ ’ | cut -d’ ’ -f3
2、查出分区空间使用率的最大百分比值
答:df | tr -s ' ' '%' | cut -d'%' -f5 | tr -d '[[:alpha:]]' | sort -n | tail -1
3、查出用户UID最大值的用户名、UID及shell类型
答:cut -d: -f1,3,7 /etc/passwd | sort -t ":" -k 2 -n | tail -1
4、查出/tmp的权限,以数字方式显示
答:stat /tmp |head -n4|tail -n1| cut -d/ -f1 | cut -d'(' -f2
5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
答:netstat -nt | tr -s ' ' ':' | cut -d: -f6 | sort | uniq -c | sort -nr