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]# 
相关推荐
XH-hui18 分钟前
【打靶日记】VulNyx 之 Lower6
linux·网络安全·vulnyx
叫我詹躲躲25 分钟前
救命!MySQL 误删数据找不回?老运维私藏的备份技巧,免费给
运维·数据库
陌路2035 分钟前
操作系统(9)虚拟内存-内存映射
linux
cmc10281 小时前
144.新工程导入原来工程的bd.tcl时原工程带有第三方自定义ip报错解决办法
服务器·网络·tcp/ip
JuiceFS2 小时前
深入解析 JuiceFS 垃圾回收机制
运维·后端
路由侠内网穿透2 小时前
本地部署开源物联网平台 ThingsBoard 并实现外部访问( Windows 版本)
运维·服务器·windows·物联网·开源
Starry_hello world2 小时前
进程的替换
linux·笔记·有问必答
微信api接口介绍3 小时前
微信个人发消息api
运维·服务器·开发语言·前端·网络·微信·ipad
Code-X03 小时前
安装 Docker 时,为什么要装 dnf-utils?
运维·docker·容器
攻心的子乐3 小时前
MinIO 开源的分布式文件服务器
运维·服务器