linux之文本处理工具

一,文本查看命令

cat命令

    

    cat [OPTION]... [FILE]...

OPTION:

    -E:显示行结束符$

    -n: 对显示出的每一行进行编号

    -A: 显示所有控制符

    -b: 非空编号

    -s: 压缩连续的空行成一行

blob.png

more命令

more命令是用来分页查看文件内容

more [options] file [...]

    -d选项是为了显示翻页和退出

less命令

less命令是用来一页一页地查看文件或STDIN输出

查看是有用地命令包括:

    /文本 搜索 文本

    n:转到下一个匹配项  N:转到下一个匹配项

并且,less命令还是man命令使用地分页器

head命令

head [OPTION]... [FILE]...

OPTION:

    -c#:指定获取前#字节

    -n#:指定获取前#行

tail命令

tail [OPTION]... [FILE]...

OPTION:

    

    -c#:指定获取后#字节

    -n#:指定获取后#行

    -f:跟踪显示问津新追加的内容,常用日志监控

二,文本内容操作命令

cut命令

cut OPTION... [FILE]...

    -d DELIMITER:指明分隔符,默认tab

    -f FILEDS:

        #:     第#个字段

        #,#[,#]:  离散的多个字段,例如1,2,4,5

        #-#:     连续的多个字段,例如1-5

        混合使用:1-3,6,9

    -c 按字符切割

    --output-delimiter=STRING 指定输出分隔符

比如:显示/etc/passwd文件中用户,uid,默认的shell,中间用 --++-- 作为分隔符

blob.png

比如按照字符切割,每行第一个到第八个字符切割出来

blob.png

paste命令

主要用户合并两个文件同行号的列到一行

paste [OPTION]... [FILE]...

OPTION:

    -d 分隔符,指定分隔符,默认用TAB

    -s :所有行合成一行显示

比如

blob.png

wc命令

文本数据统计命令,用来计数单词总数,行总数,字节总数和字符总数,可以对文件或者STDIN中的数据运行

blob.png

命令结果中的三对数字分别对应为 行数,字数,字符数

它有以下几个参数

    -l 用来统计行数

    -w 用来统计单词总数

    -c 用来统计字节总数

    -m 用来统计字符总数

三,文本排序

sort命令

主要是把整理过的文本显示在STDOUT ,不会改变原始文件内容

Usage: cut OPTION... [FILE]...

OPTION:

    -r 执行反方向排序

    -n 按数字大小进行排序

    -f 忽略字符串中的字符大小写

    -u (unique)删除输出中的重复行

    -t c 使用c作为字段界定符

    -k X 按照使用c字符分割的X列来整理能够使用多次

比如 若实现对/etc/passwd 中uid进行由大到小排序,可以以:为分隔符,对第三列进行排序,如下

blob.png

uniq命令

该命令可以从输入中删除重复的前后相接的行

Usage: uniq [OPTION]... [INPUT [OUTPUT]]

OPTION:

    -c 显示每行重复出现的次数

    -d 仅显示重复过的行(连续且完全相同方为重复)

    -u 仅显示不曾重复的行

此命令常和sort命令同时使用:

sort test.txt | uniq -c

diff命令

该命令是用来比较连个文件之间的区别,比如

blob.png

diff 命令的输出可以被保存到一种叫做"补丁"的文件中,可以使用-u选项来输出统一(unified)的diff格式文件,适用于补丁文件

path 命令复制在其他文件中进行的改变(需要谨慎使用!),可以使用-b选项来自动备份改变了的文件

    diff -u one.txt two.txt > path.patch

    patch -b one.txt path.patch

实战练习:

1、找出ifconfig命令结果中本机的所有IPv4地址 

 ifconfig | tr -s ' ' | cut -c7-23|head -2|tail -1|cut -d ' ' -f1

2、查出分区空间使用率的最大百分比值 

 df | cut -c44-46|sort -n|tail -1

3、查出用户UID最大值的用户名、UID及shell类型 

 cat /etc/passwd | sort -n -t: -k3|tail -1|cut -d: -f1,3,7

4、查出/tmp的权限,以数字方式显示 

 stat /tmp | head -4|tail -1 |cut -d '(' -f2|cut -d '/' -f1

5、统计当前连接本机的每个远程主机IP的连接数,并按从大 到小排序

 netstat -nt | tr -s ' '|cut -d ' ' -f5 |cut -d: -f1 | uniq -c|\grep [.]