文本常见处理工具

1、文件内容查看命令

1.1、cat

cat 可以查看文本内容

cat [OPTION]... [FILE]...
  • -E 显示行结束符$
  • -A 显示所有控制符
  • -n 对显示出的每一行进行编号
  • -b 非空行编号
  • -s 压缩连续的空行成一行
#范例
[root@centos79_test ~]# cat hello.log
hello world1
hello world11
hello world111
hello world1111
hello world11111
hello world111111
[root@centos79_test ~]# cat -A hello.log
hello world1$
hello world11$
hello world111$
hello world1111$
hello world11111$
hello world111111$
[root@centos79_test ~]# cat -n hello.log
     1	hello world1
     2	hello world11
     3	hello world111
     4	hello world1111
     5	hello world11111
     6	hello world111111

1.2、nl

显示行号,相当于cat -b

#范例
[root@centos79_test ~]# nl hello.log
     1	hello world1
     2	hello world11
     3	hello world111
     4	hello world1111
     5	hello world11111
     6	hello world111111

1.3、tac

逆向显示文本内容

#范例
[root@centos79_test ~]# tac hello.log
hello world111111
hello world11111
hello world1111
hello world111
hello world11
hello world1

1.4、rev

将同一行的内容逆向显示

#范例
[root@centos79_test ~]# rev hello.log
1dlrow olleh
11dlrow olleh
111dlrow olleh
1111dlrow olleh
11111dlrow olleh
111111dlrow olleh

1.5、查看非文本文件内容

#范例
[root@centos79_test ~]# hexdump -C  hello.log
00000000  68 65 6c 6c 6f 20 77 6f  72 6c 64 31 0a 68 65 6c  |hello world1.hel|
00000010  6c 6f 20 77 6f 72 6c 64  31 31 0a 68 65 6c 6c 6f  |lo world11.hello|
00000020  20 77 6f 72 6c 64 31 31  31 0a 68 65 6c 6c 6f 20  | world111.hello |
00000030  77 6f 72 6c 64 31 31 31  31 0a 68 65 6c 6c 6f 20  |world1111.hello |
00000040  77 6f 72 6c 64 31 31 31  31 31 0a 68 65 6c 6c 6f  |world11111.hello|
00000050  20 77 6f 72 6c 64 31 31  31 31 31 31 0a           | world111111.|
0000005d

2、分页查看文件内容

2.1、more

可以实现分页查看文件,可以配合管道实现输出信息的分页

more [OPTIONS...] FILE...
-d: 显示翻页及退出提示

2.2、less

less 也可以实现分页查看文件或STDIN输出,less 命令是man命令使用的分页器

/文本 搜索 文本
n/N 跳到下一个 或 上一个匹配

3、显示文本前面或后面的行内容

3.1、head

可以显示文件或标准输入的前面行

head [OPTION]... [FILE]...
  • -c # 指定获取前#字节
  • -n # 指定获取前#行,#如果为负数,表示从文件头取到倒数第#前
  • -# 同上

#范例
[root@centos79_test ~]# 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@centos79_test ~]# 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

[root@centos79_test ~]# head -c 31 /etc/passwd
root:x:0:0:root:/root:/bin/bash

3.2、tail

tail 和head 相反,查看文件或标准输入的倒数行

tail [OPTION]... [FILE]...
  • -c # 指定获取后#字节
  • -n # 指定获取后#行,如果#是负数,表示从第#行开始到文件结束
  • -# 同上
  • -f 跟踪显示文件fd新追加的内容,常用日志监控,相当于 –follow=descriptor,当文件删除再新建同名文件,将无法继续跟踪文件
  • -F 跟踪文件名,相当于–follow=name –retry,当文件删除再新建同名文件,将可以继续跟踪文件
  • tailf 类似 tail –f,当文件不增长时并不访问文件,节约资源,CentOS8已经无此工具
#范例
[root@centos79_test ~]# tail -n 3 /etc/passwd
test:x:1000:1000::/home/test:/bin/bash
user1:x:1001:1002::/home/user1:/bin/bash
user2:x:1002:1003::/home/user2:/bin/bash
图片[1]-文本常见处理工具-李佳程的个人主页
图片[2]-文本常见处理工具-李佳程的个人主页

4、按列抽取文本 cut

cut 命令可以提取文本文件或STDIN数据的指定列

cut [OPTION]... [FILE]...
  • -d DELIMITER: 指明分隔符,默认tab
  • -f FILEDS:
    • #: 第#个字段,例如:3
    • #,#[,#]: 离散的多个字段,例如:1,3,6
    • #-#: 连续的多个字段, 例如:1-6
    • 混合使用:1-3,7
  • -c 按字符切割
  • –output-delimiter=STRING指定输出分隔符
#范例
[root@centos79_test ~]# ifconfig | head -2 | tail -1 | cut -d" " -f10
192.168.1.10
[root@centos79_test ~]# ifconfig |head -n2 |tail -n1|tr -s " "
 inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
[root@centos79_test ~]# ifconfig |head -n2 |tail -n1|tr -s " " |cut -d" " -f3
192.168.1.10

5、合并多个文件 paste

paste 合并多个文件同行号的列到一行

paste [OPTION]... [FILE]...
  • -d #分隔符:指定分隔符,默认用TAB
  • -s #所有行合成一行显示

6、分析文本的工具

  • 文本数据统计:wc
  • 整理文本:sort
  • 比较文件:diff和patch

6.1、收集文本统计数据 wc

wc 命令可用于统计文件的行总数、单词总数、字节总数和字符总数
可以对文件或STDIN中的数据统计

  • -l 只计数行数
  • -w 只计数单词总数
  • -c 只计数字节总数
  • -m 只计数字符总数
  • -L 显示文件中最长行的长度

6.2、文本排序 sort

把整理过的文本显示在STDOUT,不改变原始文件

sort [options] file(s)
  • -r 执行反方向(由上至下)整理
  • -R 随机排序
  • -n 执行按数字大小整理
  • -h 人类可读排序,如: 2K 1G
  • -f 选项忽略(fold)字符串中的字符大小写
  • -u 选项(独特,unique),合并重复项,即去重
  • -t c 选项使用c做为字段界定符
  • -k # 选项按照使用c字符分隔的 # 列来整理能够使用多次

6.3、去重 uniq

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

uniq [OPTION]... [FILE]...
  • -c 显示每行重复出现的次数
  • -d 仅显示重复过的行
  • -u 仅显示不曾重复的行
#范例
#统计日志访问量最多的请求
cut -d" " -f1 access_log |sort |uniq -c|sort -nr |head -3
lastb -f btmp-34 | tr -s ' ' |cut -d ' ' -f3|sort |uniq -c |sort -nr | head -3

6.4、比较文件

diff 命令比较两个文件之间的区别

  • -u 选项来输出“统一的(unified)”diff格式文件,最适用于补丁文件

patch 复制在其它文件中进行的改变(要谨慎使用)

  • -b 选项来自动备份改变了的文件

vimdiff 相当于 vim -d

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享