Linux 获取文本部分内容

Linux获取文本部分内容

前言

test.log 文本内容如下:

(注意:内容 a1004a1005之间有一空行)

bash 复制代码
[root@gaussdb002 tmp]# cat test.log 
a1001
a1002
a1003
a1004

a1005
a1006
a1007
a1008
[root@gaussdb002 tmp]# 

场景

获取前几行内容

head 命令

语法: head -n <行数> 文件名

-n <行数>:指定要显示的行数。如果不指定 -n 参数,默认输出前 10 行。

例如:获取前 3行 数据。

bash 复制代码
[root@gaussdb002 tmp]# head -n 3 test.log 
a1001
a1002
a1003
[root@gaussdb002 tmp]# 

获取末尾几行内容

tail 命令

语法: tail -n <行数> 文件名

-n <行数>:指定从文件末尾显示的行数。如果不指定 -n 参数,默认输出最后 10 行。

例如:获取末尾 3行 数据。

bash 复制代码
[root@gaussdb002 tmp]# tail -n 3 test.log 
a1006
a1007
a1008
[root@gaussdb002 tmp]# 

获取中间内容

  1. 使用 vim 编辑文件,打开行号(输入:set number

  2. 实现 :获取 第3行 ~ 第6行 之间的数据。

实现此需求方式有以下几种:

head 命令 + tail 命令 结合

bash 复制代码
[root@gaussdb002 tmp]# head -n 6 test.log  | tail -n +3 
a1003
a1004

a1005
[root@gaussdb002 tmp]# 

若内容较多,可将内容重新输出到 文件中:

bash 复制代码
[root@gaussdb002 tmp]# head -n 6 test.log  | tail -n +3 > temp.log
[root@gaussdb002 tmp]# cat temp.log 
a1003
a1004

a1005
[root@gaussdb002 tmp]# 

sed 命令

sed 命令

语法: sed -n '<起始行>,<结束行>p' 文件名

-n:禁止自动打印输出,只输出匹配的行。
<起始行>,<结束行>p:表示从 <起始行> 到 <结束行> 之间的行进行打印,p 是 print 的缩写。

bash 复制代码
[root@gaussdb002 tmp]# sed -n '3,6p' test.log 
a1003
a1004

a1005
[root@gaussdb002 tmp]# 

awk 命令

awk 命令

语法: awk '条件 {动作}' 文件名

NR:表示当前处理的行号。
条件:定义在什么条件下执行 {动作},例如 NR>=3 && NR<=5。
{动作}:在满足条件时执行的操作,默认是打印匹配行。

bash 复制代码
[root@gaussdb002 tmp]# awk 'NR>=3 && NR<=6' test.log 
a1003
a1004

a1005
[root@gaussdb002 tmp]# 
相关推荐
JuiceFS1 天前
从 MLPerf Storage v2.0 看 AI 训练中的存储性能与扩展能力
运维·后端
CYRUS_STUDIO1 天前
用 Frida 控制 Android 线程:kill 命令、挂起与恢复全解析
android·linux·逆向
熊猫李1 天前
rootfs-根文件系统详解
linux
chen9451 天前
mysql 3节点mgr集群部署
运维·后端
LH_R1 天前
OneTerm开源堡垒机实战(三):功能扩展与效率提升
运维·后端·安全
dessler1 天前
Hadoop HDFS-高可用集群部署
linux·运维·hdfs
泽泽爱旅行1 天前
awk 语法解析-前端学习
linux·前端
少妇的美梦2 天前
logstash教程
运维
chen9452 天前
k8s集群部署vector日志采集器
运维
chen9452 天前
aws ec2部署harbor,使用s3存储
运维