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]# 
相关推荐
青青草原技术员灰太狼1 天前
Nginx的https搭建
linux·服务器·网络
xu_yule1 天前
网络和Linux网络-4(应用层)序列化和反序列化(网络计算器)
linux·网络
宇钶宇夕1 天前
三旺 INP314T 网关快速入门指南:从登录到基础配置
运维·自动化·软件工程
2***s6721 天前
Failed to restart nginx.service Unit nginx.service not found
运维·nginx
拿破轮1 天前
使用通义灵码解决复杂正则表达式替换字符串的问题.
java·服务器·前端
YongCheng_Liang1 天前
Zabbix 6.4 完整部署教程:从环境准备到监控实战
linux·运维·zabbix
&&Citrus1 天前
【杂谈】SNNU公共计算平台:深度学习服务器配置与远程开发指北
服务器·人工智能·vscode·深度学习·snnu
小白电脑技术1 天前
旧电脑安装流畅的系统?用虚拟机先体验一下Linux Mint!
linux·电脑
数字化顾问1 天前
(65页PPT)大型集团物料主数据管理系统建设规划方案(附下载方式)
大数据·运维·人工智能
翼龙云_cloud1 天前
阿里云渠道商:新手怎么操作阿里云无影云电脑?
运维·服务器·阿里云·云计算·电脑