Linux文本处理常见工具

news2024/11/10 17:12:00

文章目录

  • 文件内容查看
    • 查看文本文件内容
      • cat
      • tac
      • rev
      • nl
    • 查看非文本文件内容
      • hexdump
      • od
      • xxd
  • 分页查看文件内容
    • more
    • less
  • 显示文本前后的行内容
    • head
    • tail
      • 文件描述符
        • 如果找到文件描述符
      • 查看最新日志
      • 范例:找出IP地址的那一行
  • cut--按列抽取文本
    • 按分隔符
    • 按字符位置
      • 取网卡ip
  • tr--文本转换/删除/压缩
    • 转换字母大小写
    • 删除字符串中的数字
    • 压缩重复字符
    • 先替换再删除指定字符
    • 替换
  • 分析文本的工具
    • wc--统计文本数据
      • 去掉df信息的头部注释行
    • sort--文本排序
      • 找到磁盘利用率最大的数据
    • uniq--去重
      • 统计曰志访问量最多的请求
      • 并发连接最多的远程主机IP
    • 取两个文件的相同和不同的行
  • 比较文件
    • diff

文件内容查看

查看文本文件内容

cat

cat可以查看文本内容
格式

cat [OPTION]... [FILE]...

常见选项

-E: 显示行结束符$
-A: 显示所有控制符
-n: 对显示出的每一行进行编号
-b: 非空行编号
-s: 压缩连续的空行成一行

在这里插入图片描述
在这里插入图片描述

[root@rocky ~]# cat /data/fc.txt 
a
b
c
[root@rocky ~]# hexdump -C /data/fb.txt
00000000  61 0a 62 0a 63 0a 64 0a  0a                       |a.b.c.d..|
00000009
[root@rocky ~]# cat -A /data/fc.txt 
a^M$
b^M$
c^M$
[root@rocky ~]# file /data/fc.txt 
/data/fc.txt: ASCII text, with CRLF line terminators
[root@rocky ~]# 

在这里插入图片描述
压缩连续的空行
在这里插入图片描述
cat即支持输入又支持输出,如果想临时的创建一个文件的话就可以直接使用cat不必再用vim打开了。
在这里插入图片描述

tac

tac可读键盘输入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

rev

rev也可读取键盘输入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

nl

显示行号,相当于cat -b
在这里插入图片描述

查看非文本文件内容

hexdump

在这里插入图片描述
在这里插入图片描述

od

od即dump files in octal and other formats
在这里插入图片描述

xxd

在这里插入图片描述

分页查看文件内容

more

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

格式

more [OPTIONS. . .] FILE. . .

选项:

-d: 显示翻页及退出提示

more一旦翻到底就退出了,less则不会。

less

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

查看时有用的命令包括:

/文本 搜索 文本
n/N  跳到下一个 或 上一个匹配
PgUP/PgDn 上下翻页
[root@rocky ~]# ls -R /etc/ |less

显示文本前后的行内容

head

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

格式:

head [OPTION] ... [FILE]...

选项:

-c num   指定获取前num字节
-n num   指定获取前num行,num如果为负数,表示从文件头取到倒数第num前
-num     同上

在这里插入图片描述
在这里插入图片描述
head也支持标准输入重定向和管道
在这里插入图片描述

tail

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

格式:

tail [OPTION].. . [FILE]...

常用选项

-c num   指定获取后num字节
-n num   指定获取后num行,如果num是负数,表示从第num行开始到文件结束-num同上
-f       跟踪显示文件fd(文件描述符)新追加的内容,常用日志监控,相当于--fo1low=descriptor, 
         当文件删除再新建同名文件,将无法继续跟踪文件
-F       跟踪文件名,相当于--fo11ow=name --retry,当文件删除再新建同名文件,将可以继续跟踪文件


tailf    类似 tail -f,当文件不增长时并不访问文件,节约资源, Centos8已经无此工具

在这里插入图片描述
tail -fn0 只监控新日志内容。
在这里插入图片描述

文件描述符

tail -f xxx跟踪的是文件描述符,

如果找到文件描述符

在这里插入图片描述
删除文件后,tail并没有报错,是因为此时f1.txt文件的描述符还在,使用-F选项则是跟踪文件名。
在这里插入图片描述

查看最新日志

[root@rocky ~]# tail -fn0 /var/log/messages
[root@rocky ~]# tail -0f /var/log/messages

范例:找出IP地址的那一行

ifconfig ens160 |head -2|tail -1

在这里插入图片描述

cut–按列抽取文本

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

格式

cut [OPTION]. .. [FILE]...

常用选项

-d delimiter:  指明分隔符,默认tab
-f fileds:
     num:  第num个字段,例如:3
     num,num[,num]: 离散的多个字段,例如:1,3,6
     num-num: 连续的多个字段,例如:1-6
     混合使用:1-3,7
-c  按字符切割
--output-de1imiter=STRING  指定输出分隔符

按分隔符

在这里插入图片描述
在这里插入图片描述

按字符位置

在这里插入图片描述
打开Xshell显示已复制的字符数设置
在这里插入图片描述
在这里插入图片描述

取网卡ip

在这里插入图片描述

tr–文本转换/删除/压缩

tr(translate)命令是 Linux 中的一个简单但强大的命令行工具,用于替换或删除文本中的字符。它从标准输入读取数据,并将输出结果发送到标准输出。tr 命令特别适合处理字符转换、删除、压缩重复字符等任务。

格式

tr [OPTION]... SET1 [SET2]

SET1:指定要被替换或删除的字符集。
SET2:指定替换字符集(当执行替换操作时)。

常用选项

常用选项
  -d:删除指定的字符集,而不是转换。
  -s:替换连续重复的字符为单一字符。
  -c:对指定字符集的补集进行操作,即对不在集合中的字符进行处理

转换字母大小写

在这里插入图片描述

删除字符串中的数字

在这里插入图片描述

压缩重复字符

在这里插入图片描述

先替换再删除指定字符

在这里插入图片描述

替换

在这里插入图片描述

分析文本的工具

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

wc–统计文本数据

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

常用选项

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

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

去掉df信息的头部注释行

在这里插入图片描述
在这里插入图片描述

sort–文本排序

把整理过的文本显示在stdout,不改变原始文件。默认安装字符顺序排序

格式:

sort [options] file(s)

常用选项

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

在这里插入图片描述
按数字正序排
在这里插入图片描述
按数字倒序排
在这里插入图片描述
在这里插入图片描述

找到磁盘利用率最大的数据

df |tr -s ' ' '%'|cut -d% -f5|sort -nr|head -1

在这里插入图片描述

uniq–去重

uniq命令从输入中删除前后相邻的重复的行
格式:

uniq [OPTION]... [FILE]...

常见选项:

-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行

在这里插入图片描述
显示重复出现的次数
在这里插入图片描述
在这里插入图片描述

统计曰志访问量最多的请求

[root@centos8 ~]#cut -d' ' -f1 access_log |sort |uniq -c| sort -nr | head -3
4870 172.20.116.228
3429 172.20.116.208
2834 172.20.0.222

172.20.116.228的ip访问我的次数太多了4870次,肯定是个恶意请求,我要设置iptables规则,拒绝它的访问。

iptables -AINPUT -s 172.20.116.228

并发连接最多的远程主机IP

[root@centos8 ~]#ss -nt |tail -n+2 |tr -s ' ' : |cut -d: -f6 |sort |uniq -c |sort -nr |head -n2
  7 10.0.0.1
  2 10.0.0.7

取两个文件的相同和不同的行

在这里插入图片描述

比较文件

diff

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

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2037715.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Rocky系统部署k8s1.28.2单节点集群(Containerd)+Kuboard

目录 Kubernetes介绍 Kubernetes具备的功能 Kubernetes集群角色 Master管理节点组件 Node工作节点组件 非必须的集群插件 Kubernetes集群类型 Kubernetes集群规划 集群前期环境准备 开启Bridge网桥过滤 关闭SWAP交换分区 安装Containerd软件包 K8s集群部署方式 集…

关于归并排序:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_urlhttps%3A%2F return 语句开始之后&#xff0c;会执行之前剩余遗留下的语句和状态#include<bits/stdc.h> using namespace std…

Xilinx XAPP585相关

XAPP585中相关的状态机 第一个状态机&#xff1a;这里主要是在对时钟线延迟的基础上&#xff0c;通过BITSLIP操作&#xff0c;做时钟的对齐&#xff1b; 第二个状态机&#xff1a;这里对c_delay_in所做的操作&#xff0c;主要是对时钟线的延迟进行控制&#xff1b; delay_con…

远程代码执行漏洞

1.简介 远程代码执行(remote code execution)简称RCE&#xff0c;由于应用程序在调用一些能够将字符串转换为代码的函数(如PHP中的eval)时&#xff0c;没有考虑用户是否控制这个字符串&#xff0c;则会导致代码执行漏洞的发生Webshell能够执行代码&#xff0c;本质上就是利用了…

新AI工程师Genie强势来袭,84秒解决代码问题

&#x1f989; AI新闻 &#x1f680; 新AI工程师Genie强势来袭&#xff0c;84秒解决代码问题 摘要&#xff1a;新兴AI软件工程师Genie因其超凡能力而引发关注&#xff0c;它在SWE-Bench排行榜上以30.07%的问题解决率远超第二名。Genie能模拟人类工程师的思维&#xff0c;自动…

CV党福音:YOLOv8实现语义分割(一)

前面我们得知YOLOv8不但可以实现目标检测任务&#xff0c;还包揽了分类、分割、姿态估计等计算机视觉任务。在上一篇博文中&#xff0c;博主已经介绍了YOLOv8如何实现分类&#xff0c;在这篇博文里&#xff0c;博主将介绍其如何将语义分割给收入囊中。 YOLOv8语义分割架构图 …

LeetCode - 54 - 螺旋矩阵

力扣54题 题目描述&#xff1a; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 题解思路&#xff1a; 54题和59题 螺旋矩阵Ⅱ 有些微区别&#xff0c;59是nn的方形矩阵&#xff0c;但是54需要考虑行和列不相等的情况…

Webpack中搭建本地服务dev-server

开发过程中关于实现文件内容发生变化时&#xff0c;可监听文件变化内容、自动完成编译热更新&#xff0c;webpack提供了几种可选方式&#xff1a; 1. webpack watch mode监听文件变化 watch可在导出配置中添加或者在webpack 启动命令中添加--watch 注意&#xff1a;watch 的配…

武汉流星汇聚:跨境电商引领外贸增长新引擎,展望未来发展趋势

在过去的几年里&#xff0c;跨境电商如同一股强劲的东风&#xff0c;不仅为外贸增长注入了新的活力&#xff0c;更成为了引领全球贸易发展的新引擎。随着全球经济逐渐复苏&#xff0c;跨境电商行业正以惊人的速度迈向新的高度&#xff0c;展现出其作为外贸增长关键推动力的巨大…

面试题:什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?该如何应对这种情况?如何处理 Redis 的穿透?

面试题&#xff1a;什么是 Redis 的雪崩、穿透和击穿&#xff1f;Redis 崩溃之后会怎么样&#xff1f;该如何应对这种情况&#xff1f;如何处理 Redis 的穿透&#xff1f; 面试题面试官心理分析面试题剖析缓存雪崩缓存穿透缓存击穿 面试题 了解什么是 Redis 的雪崩、穿透和击穿…

python中的列表、元组、字典之间的区别

python列表 python列表是python中使用最频繁的数据类型。 列表可以完成大多数集合类的数据结构实现。它支持字符、数字、字符串甚至可以包含列表&#xff08;即嵌套&#xff09;。 列表用"[ ]"标识&#xff0c;是python最通用的复合数据类型。列表中值的切割也可以…

RabbitMQ入门与进阶

RabbitMQ入门与进阶 基础篇1. 为什么需要消息队列?2. 什么是消息队列?3. RabbitMQ体系结构介绍4. RabbitMQ安装5. HelloWorld6. RabbitMQ经典用法(工作模式)7. Work Queues8. Publish/Subscribe9. Routing10. Topics 进阶篇1. RabbitMQ整合SpringBoot2. 消息可靠性投递故障情…

thinkphp中的sql和代码执行

目录 thinkphp5漏洞sql注入 漏洞概要. 漏洞准备 漏洞分析 代码执行 限制条件1 1 2 限制条件 1 限制条件3 php7.x php5 thinkphp5漏洞sql注入 漏洞概要. 本次漏洞存在于 Builder 类的 parseData 方法中。由于程序没有对数据进行很好的过滤&#xff0c;将数据拼接进…

免费Excel数据批量转Word工具

下载地址&#xff1a;https://pan.quark.cn/s/5d4cff261d83 一个可以快速的将excel数据批量按照word模板进行转换的小工具。 功能&#xff1a; 1、自定义word模板&#xff0c;嵌入差值表达式 2、批量打包下载 3、自定义导出word文件名&#xff0c;支持嵌入excel字段 4、缓存导…

呼叫中心系统客服服务功能模块

呼叫中心系统的客服服务功能模块可应用于客户服务场景&#xff0c;如&#xff1a;售后服务、物业报修、投诉平台、信息查询、订单服务、预约报名等。此功能与工单管理模块结合使用&#xff0c;形成规范化工作流程。 客服服务模块功能包括&#xff1a;查询、添加、修改、导出、受…

大数据-82 Spark 集群模式启动 Hadoop HDFS Spark 与 HelloWorld!

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

ChatMoneyAI菜谱大全告诉你如何烹饪

本文由 ChatMoney团队出品 在这个充满科技感的时代&#xff0c;人工智能技术正逐渐渗透到我们生活的方方面面。特别是在烹饪领域&#xff0c;AI菜谱的出现为厨艺不精的人们带来了一线希望。就近发现ChatMoneyAI的全能AI知识库系统就有AI菜谱的功能&#xff0c;以其便捷、智能的…

【原创】java+swing+mysql商品信息管理系统设计与实现

个人主页&#xff1a;程序员杨工 个人简介&#xff1a;从事软件开发多年&#xff0c;前后端均有涉猎&#xff0c;具有丰富的开发经验 博客内容&#xff1a;全栈开发&#xff0c;分享Java、Python、Php、小程序、前后端、数据库经验和实战 开发背景&#xff1a; 使用javaswing技…

idea导入miniUI项目,依赖文件找不到

问题 我是第一次使用idea开发工具也是第一次用miniUI项目&#xff0c;以前一直用的是eclipse&#xff0c;所以我导入项目之后的思路就是配置jdk、maven,但是当我做好这些的时候&#xff0c;项目没有任何的反应&#xff0c;依然在报错&#xff0c;然后就请教了很厉害的同事&…

【C++】函数的声明

函数的声明作用为函数的可以把函数的定义放在末尾&#xff0c;当然继续保持在开头也可以 函数的声明可以有多次&#xff0c;但是定义只能有一次 下面是一个实例 #include<iostream> using namespace std;//函数的声明 //比较函数&#xff0c;实现两个整型数字进行比较…