Linux文本处理工具 一
在Linux中有着众多的文本处理工具,而这些工具也各有各的用法,和其优势,以下介绍几个常用文本处理命令
一. cat——常用文本查看工具
cat命令是Linux系统中常用的文本查看工具,用cat查看的文本直接打印在当前界面,方便查看但是无法直接编辑
用法:cat [文件名] 直接打印出该文件内容
cat -E [文件名] 打印文件时在行尾显示$
cat -v [文件名] 打印文件时显示windows文件中的换行符^M
cat -T [文件名] 打印文件时显示TAB
cat -A [文件名] 相当于 cat -EvT [文件名]
cat -n [文件名] 打印文件时在每行开头添加行号
cat -b [文件名] 打印文件时在每行开头添加行号,空行不参加编号
cat -s [文件名] 压缩连续的空号行成一行
cat除了以上的查看文本功能还可以通过输出重定向“>”变成文本编辑工具
用法:cat > [文件名]
这里的文件可以是创建过的,也可以是没有创建的。没有创建则在当前目录直接创建。
在编辑文件时可以通过在新的一行按alt+d退出编辑
另外,用这种方式编辑文件时系统会直接覆盖源文件,把“>”换成“>>”即可实现文
本的追加
二.rev——行内倒序显示
rev命令用来查看文件并将每行的内容倒着显示,例如,有一行内容为abc,通过rev命令打印出来就是cba
用法:rev [文件名]
三.head——打印文件的开始部分
head命令也是用来查看文本的工具,不过主要用来指定查看一个文件的前n行
用法:head [文件名] 查看文件的前十行
head -n [文件名] 查看文件的前n行
head -c n [文件名] 查看文件的前n个字节
四.tail——打印文件的结尾部分
tail命令和head命令基本一样,只不过tail命令用来查看文件的结尾部分
用法:tail [文件名] 查看文件的最后十行
tail -n [文件名] 查看文件的最后n行
tail -c n [文件名] 查看文件的最后n个字节
tail -f 根据文件描述符进行追踪,也就是当文件增长时输出后续添加的数据
如果文件被改名或删除,则追踪停止
tail -F 根据文件名进行追踪,如文件被改名或删除后,如果再重新创建相同的文件
名,则继续恢复追踪
tailf 类似于tail -f -n 10 当监控的文件不增长时,不会去访问硬盘,可以减小磁盘的访问。
五.cut——片段选取
cut是一个文件的片段选取命令,通常用于把一个文件中我们想要的部分截取下来不过这个截取是纵向截取也就是截取出我们想要的列。由于在Linux系统中许多文件是成列显示的所以cut命令也是一个常用命令。
一个成列显示的文件例如/etc/paswd 文件,总共七列,以“:”为分隔符:
[root@centos7 bin]# head /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 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 operator:x:11:0:operator:/root:/sbin/nologin
用法:cut -b [文件名] 以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
cut -c 以字符为单位进行分割。
cut -d 自定义分隔符,默认为制表符。
cut -f 与-d一起使用,指定显示哪个区域。
cut -n 取消分割多字节字符。仅和 -b 参数一起使用。如果字符的最后一个字节落在由 -b 参数的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除。
用法举例:
截取出/etc/passwd文件中的第一列和第四列
[root@centos7 bin]# head /etc/passwd |cut -d: -f1,4 root:0 bin:1 daemon:2 adm:4 lp:7 sync:0 shutdown:0 halt:0 mail:12 operator:0
解释:由于文件太长,我选择用head命令来显示文件的前十行,“|”表示把head命令的结果传递给后面的cut命令,“-d:”表示我们以“:”为每一列的分隔符,并以此为基础来截取,“-f1,4”表示取第一列和第四列,如果我们要取一到四列可以将命令中的“-f1,4”改成“-f1-4”
六.wc——对文件内容进行统计
wc命令一般用来对文件输出行、单词、和字节进行统计,没有指定文件则读取标准输入。
用法:wc -l [文件名] 统计并打印文件的行数
wc -l [文件名] 统计并打印文件的字符数
wc -l [文件名] 统计并打印文件的字节数
wc -l [文件名] 统计并打印文件的单词数
wc -l [文件名] 统计并打印最长行的长度(字节数)
七.sort——将文件排序
sort将文件的每一行作为一个单位作比较,然后升序打印,其中排序是按照首字符的ASCII码的值进行比较做出的排序
用法:sort [文件名] 将文件升序打印
sort -u [文件名] 将文件升序打印并在比较时去除重复的行
sort -r [文件名] 将文件降序打印
sort -o [文件名] [文件名] 将排序过的文件内容输入到源文件(覆盖)
sort -n [文件名] 将文件中的数以数值排序,把多位数字当做一个整体
sort -t -k [文件名] 以文件的第几列内容为单位作比较并排序
用法举例:
以第四列内容为单位对/etc/passwd文件进行排序
[root@centos7 ~]# head /etc/passwd|sort -n -t: -k4 halt:x:7:0:halt:/sbin:/sbin/halt operator:x:11:0:operator:/root:/sbin/nologin root:x:0:0:root:/root:/bin/bash shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown sync:x:5:0:sync:/sbin:/bin/sync 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 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
解释:由于文件太长,我选择用head命令来显示文件的前十行,“|”表示把head命令的结果传递给后面的sort命令, sort命令的“-n”表示将多位数字看作一个整体,“-t:”表示以“:”为分隔符
“-k4”表示以第四列为单位进行排序
为了便于查看结果,我们用上面提到的cut命令将第四列取出:
[root@centos7 ~]# head /etc/passwd|sort -n -t: -k4|cut -d: -f4 0 0 0 0 0 1 2 4 7 12
八.uniq——删除重复行
uniq命令通常用于去重,将连续且重复的行删除
用法:uniq [文件名] 去重连续的重复行
uniq -c [文件名] 显示每行重复的次数
uniq -d [文件名] 仅显示重复的行
uniq -u [文件名] 仅显示未重复的行