Linux 常见文本处理工具指南

前言

在 Linux 环境下,文本处理是日常操作中的重要部分。本文将详细介绍 lLinux 中常用的文本处理命令。(本文将以 Ubuntu 版本示例)

cat命令

查看一个文件

root@ubuntu:/home# cat f1
111111111111111111111
22222222222222222
333333333333333333333333

查看多个文件

// 两个文件内容拼接展示
root@ubuntu:/home# cat f1 f2
111111111111111111111
22222222222222222
333333333333333333333333
11111111111
222222222222
33333333333

-n 选项,显示行号

root@ubuntu:/home# cat -n f3
     1	hello world
     2	
     3		hello everyone
     4	  one two one

-b 选项,显示行号跳过空行

root@ubuntu:/home# cat -b f3
     1	hello world

     2		hello everyone
     3	  one two one

-A 选项,显示所有控制符

// 例如换行符,tab符
root@ubuntu:/home# cat -A f3
hello world$
$
^Ihello everyone$
  one two one$
$

tac 命令

// 同样是查看文件内容,但内容是从下往上逆向显示
[root@ubuntu:/home]$ tac f3

  one two one
	hello everyone

hello world

rev 命令

// 同样是查看文件内容,但内容是逐行逆向显示
[root@ubuntu:/home]$ rev f3
dlrow olleh

enoyreve olleh	
eno owt eno  

more 命令

// 当文件内容较多时,more可进行翻页查看
[root@ubuntu:/home]$ more /var/log/syslog
查看操作按键
向下翻一页空格键
向下滚动一行Enter
向上翻一页b
退出查看q

less 命令

// 同样是翻页查看,功能更多
[root@ubuntu:/home]$ less /var/log/syslog
查看操作按键
向下翻一页空格键
向下滚动一行Enter
向上翻一页b
向上滚动一行y
跳转到文件的开头g
跳转到文件的末尾G
向下搜索指定模式/关键字
向上搜索指定模式?关键字
跳转到下一个匹配模式的位置n
跳转到上一个匹配模式的位置N
退出查看q

head 命令

-n 选项,查看前几行的内容

// 显示前两行内容
[root@ubuntu:/home]$ head -2 f4
边草,边草,
边草尽来兵老。
// 显示第一行到倒数第二行的内容
[root@ubuntu:/home]$ head -n -2 f4
边草,边草,
边草尽来兵老。
山南山北雪晴,
千里万里月明。

tail 命令

-n 选项,查看后几行的内容

// 显示倒数两行的内容
[root@ubuntu:/home]$ tail -2 f4
明月,明月,
胡笳一声愁绝。
// 显示第二行到最后一行的内容
[root@ubuntu:/home]$ tail -n +2 f4
边草尽来兵老。
山南山北雪晴,
千里万里月明。
明月,明月,
胡笳一声愁绝。

-f 选项,实时显示文件新追加的内容

// 显示实时文件最新内容
[root@ubuntu:/home]$ tail -fn0 /var/log/syslog

cut 命令

-d -f 选项,指定分隔符,提取指定列文本

// 以冒号分隔,提取第1\3\4\7四列文本
[root@ubuntu:/home]$ cut -d: -f1,3-4,7 /etc/passwd
root:0:0:/bin/bash
daemon:1:1:/usr/sbin/nologin
// 提取磁盘空间的使用情况的第五列,不包含数字和换行符以外的数据
// tr -s " " 是将连续空格压缩为单个空格
// tr -dc "[0-9\n]" 是删除除了数字和换行符以外的内容
[root@ubuntu:/home]$ df | tr -s " " | cut -d" " -f5 | tr -dc "[0-9\n]"
1
7
0
0
14
1
// 提取磁盘空间的使用情况的第五列,不包含数字和换行符以外的数据
// tr -s ' ' % 是将连续空格压缩为单个空格,再将单个空格替换为%
// tr -d '[:alpha:]' 是删除所有的字母字符
[root@ubuntu:/home]$ df | tr -s ' ' % |cut -d% -f5 |tr -d '[:alpha:]'
1
7
0
0
14
1
// cut -c64-65 是提取每一行的64和65字符
[root@ubuntu:~]$ df | cut -c64-65
se
 1
 5
 0
 0
 6
 1
// 以冒号为分隔符,截取1,3,7列的内容,并以---分割显示
[root@ubuntu:~]$ cut -d: -f1,3,7 --output-delimiter="---" /etc/passwd
root---0---/bin/bash
daemon---1---/usr/sbin/nologin

past 命令

// 将两个文件的每一行都并为一行显示
[root@ubuntu:/home]$ paste f3 f4
hello world	边草,边草,
	边草尽来兵老。
	hello everyone	山南山北雪晴,
  one two one	千里万里月明。
	明月,明月,
	胡笳一声愁绝。
// 并列显示切用冒号分隔
[root@ubuntu:/home]$ paste -d":" f3 f4
hello world:边草,边草,
:边草尽来兵老。
	hello everyone:山南山北雪晴,
  one two one:千里万里月明。
:明月,明月,
:胡笳一声愁绝。
// 将文件内容放在一行显示
[root@ubuntu:/home]$ paste -s f4
边草,边草,	边草尽来兵老。	山南山北雪晴,	千里万里月明。	明月,明月,	胡笳一声愁绝。

wc 命令

// 显示行数、单词数、字节数
[root@ubuntu:/home]$ wc f4
  6   6 126 f4

-l 选项,仅显示行数

[root@ubuntu:/home]$ wc -l f4
6 f4
// 不显示第一行
[root@ubuntu:/home]$ df | tail -n $(echo `df | wc -l`-1|bc)
tmpfs                                196612    1288    195324   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 101590008 4464588  91918792   5% /

sort 命令

// sort -t:是以冒号分隔,-k2是按第二列进行排序,-nr是以数值形式降序排序
[root@ubuntu:/home]$ cut -d: -f1,3 /etc/passwd|sort -t: -k2 -nr |head -n3
nobody:65534
jerry:1003
tom:1002
// 统计日志访问量
// sort -u是去重
[root@ubuntu ~]# cut -d" " -f1 /var/log/nginx/access_log |sort -u|wc -l
201
// 查看分区利用率最高值
[root@ubuntu ~]# df| tr -s ' ' '%'|cut -d% -f5|sort -nr|head -1
14

思考:有两个文件,a.txt与b.txt ,合并两个文件,并输出时确保每个数字也唯一

[root@ubuntu ~]# cat a.txt b.txt | sort -n | uniq

uniq 命令

-c 选项,显示每行出现的次数

[root@ubuntu ~]# sort -n a.txt b.txt | uniq -c
1 5
2 8
2 33
// 统计日志访问量最多的前三名的请求
[root@ubuntu2204 ~]# lastb | head -n $(echo `lastb | wc -l`-2 | bc) | tr -s ' ' | cut -d " " -f3 | sort | uniq -c | sort -nr | head -3
    5 183.136.225.32
    2 47.101.154.149
    1 64.62.197.96

-d 选项,取两个文件相同行

[root@ubuntu ~]# cat a.txt b.txt | sort | uniq -d

-u 选项,取两个文件不同行

[root@ubuntu ~]# cat a.txt b.txt | sort | uniq -u
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值