文本处理工具
Grep工具的基本使用
grep作用:grep是行过滤工具;用于根据关键字进行行过滤
提示:通过alias命令设置grep别名,搜索参数时带颜色显示
alias grep='grep color=auto '
命令语法格式:
grep [选项] '参数' 文件名
grep命令选项:
-n :显示行号
-i:忽略大小写
^xxx:以xxx开头的格式
xxx$:以xxx结尾的格式
-v:取反
-B:打印前几行
-A:打印后几行
-C:过滤上下文(前几行,后几行)
-w:按单词搜索
-o:打印匹配关键字
'^$':空行
Cut工具的基本使用
cut作用:cut是列截取工具,用于列的截取
命令语法格式:
cut 选项 文件名
cut命令选项:
-c:以字符为单位(个)分割,截取
-d:自定义分隔符,默认为制表符\t
-f:与-d一起使用,指定截取哪个区域
示例: 如何过滤和截取centos6系统运行级别
runlevel | cut-c3
runlevel | cut-d:' '-f2
grep-v'^#' /etc/inittab | cut-d: -f2
grep'^id' /etc/inittab | cut-d: -f2
grep"initdefault:$" /etc/inittab | cut -c4
grep -v ^# /etc/inittab | cut -c4
grep'id:' /etc/inittab | cut-d: -f2
cut-d':'-f2 /etc/inittab | grep-v ^#
cut-c4 /etc/inittab | tail -1
cut-d: -f2 /etc/inittab | tail -1Sort工具的基本使用
sort作用:sort工具用于排序;它将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将它们按升序输出
sort命令选项:
-u:去除重复
-r:降序排列,默认是升序
-o:将排序结果输出到文件这,类似重定向符号>
-n:以数字排序,默认是按字符排序
-t:分隔符
-k:第N列
-b:忽略前导空格
-R:随机排列,每次运行的结果均不同
Uniq工具的基本使用
uniq作用:uniq用于去除连续的重复行
uniq命令选项:
-i:忽略大小写
-c:统计重复行次数
-d:只显示重复行
Tee工具的基本使用
tee作用:tee工具是将数据输出显示屏幕一份,然后再重定向输入到文件一份,即:(屏幕输出|文本输入 )
tee命令选项:
-a:重定向追加数据
Diff工具的基本使用
diff作用:diff工具用于逐行比较文件的不同
注意:diff描述两个文件不同的方式是告诉我们怎样改变第一个文件之后与第二个文件匹配。
命令语法格式:
diff [选项] 文件1 文件2
diff命令选项:
-b:不检查空格
-B:不检查空白行
-i:不检查大小写
-w:忽略所有的空格
--normal:正常格式显示(默认)
-c:上下文格式显示
-u:合并格式显示
举例说明:
比较两个普通文件异同,文件准备:
[root@localhost~]# cat file1
aaaa
111
hello world
222
333
bbb
[root@localhost~]#
[root@localhost~]# cat file2
aaa
hello
111
222
bbb
333
world正常格式显示比较结果,解释说明:
diff目的:file1如何改变才能和file2匹配
[root@localhost~]# diff file1 file2
1c1,2 #第一个文件的第1行需要改变(c=change)才能和第二个文件的第1到2行匹配
< aaaa #小于号"<"表示左边文件(file1)文件内容
--- #---表示分隔符
> aaa #大于号">"表示右边文件(file2)文件内容
> hello
3d3 #第一个文件的第3行删除(d=delete)后才能和第二个文件的第3行匹配
< hello world
5d4 #第一个文件的第5行删除后才能和第二个文件的第4行匹配
< 333
6a6,7 #第一个文件的第6行增加(a=add)内容后才能和第二个文件的第6到7行匹配
> 333 #需要增加的内容在第二个文件里是333和world
> world上下文格式显示比较结果,解释说明:
[root@localhost~]# diff -c file1 file
#前两行主要列出需要比较的文件名和文件的时间戳;文件名前面的符号***表示file1,---表示file2
*** file1 2022-01-2721:45:05.748650262 +0800
--- file2 2022-01-2721:45:30.470646030 +0800
*************** #我是分隔符
*** 1,6 **** #以***开头表示file1文件,1,6表示1到6行
!aaaa # !表示该行需要修改才能与第二个文件匹配111
- hello world # -表示需要删除该行才能与第二个文件匹配222
-333 # -表示需要删除该行才能与第二个文件匹配bbb
---1,7 --- # 以---开头表示file2文件,1,7表示1到7行
!aaa # 表示第一个文件需要修改才能与第二个文件匹配
!hello # 表示第一个文件需要修改才能与第二个文件匹配111222bbb
+333 # 表示第一个文件需要加上该行才能与第二个文件匹配
+ world # 表示第一个文件需要加上该行才能与第二个文件匹配合并格式显示比较结果,解释说明:
[root@localhost~]# diff -u file1 file2
#前两行主要列出需要比较的文件名和文件的时间戳;文件名前面的符号---表示file1,+++表示file2
--- file1 2022-01-2721:45:05.748650262 +0800
+++ file2 2022-01-2721:45:30.470646030 +0800
@@ -1,6 +1,7 @@
-aaaa
+aaa
+hello
111
-hello world
222
-333bbb
+333
+world比较两个目录不同
#默认情况下也会比较两个目录里相同文件的内容
[root@localhost tmp]# diff dir1 dir2
diff dir1/file1 dir2/file1
0a1
> hello
only in dir1: file3
only in dir2: file1
#如果只需要比较两个目录里文件的不同,不需要进一步比较文件内容,需要加-q选项
[root@localhost tmp]# diff -q dir1 dir2
Files dir1/file1 and dir2/file1 differ
only in dir1: file3
only in dir2: file1diff其他小技巧:
有时我们需要以一个文件为标准,去修改其他文件,并且 修改的地方较多时,我们可以通过打补丁的方式完成。
1)先找出文件不同,然后输出到一个文件
[root@localhost ~]# diff -uN file1 file2 > file.patch
-u:上下文模式
-N:将不存在的文件当作空文件
2)将不同内容打补丁到文件
[root@localhost ~]# patch file1.patch
patching file file1
3) 测试验证
[root@localhost ~]# diff file1 file2
[root@localhost ~]#Paste工具的基本使用
paste作用:paste工具用于合并文件行
paste命令选项:
-d:自定义间隔符,默认是tab
-s:串行处理,非并行
Tr工具的基本使用
tr作用:tr用于字符转换,替换和删除;主要用于删除文件中控制字符或进行字符转换
命令语法格式:
用法1:命令的执行结果交给tr处理,其中string1用于查询,string2用于转换处理
#commands|tr 'string1' 'string2'
用法2:tr处理的内容来自文件,记住要使用"<"标准输入
# tr 'string1' 'string2' < filename
用法3:匹配string1进行相应操作,如删除操作
# tr options 'string1' < filenametr命令选项:
-d:删除字符串1中所有输入字符
-s:删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串
常用匹配字符串:
字符串 含义
a-z或[:lower:] 匹配所有小写字母
A-Z或[:upper:] 匹配所有大写字母
0-9或[:digit:] 匹配所有数字
[:alnum:] 匹配所有字母和数字
[:alpha:] 匹配所有字母
[:blank:] 所有水平空白
[:punct:] 匹配所有标点符号
[:space:] 所有水平或垂直的空格
[:cntrl:] 所有控制字符 \f Ctrl-L 走行换页 \n Ctrl-J 换页 \r Ctrl-M 回车
\t Ctrl-I tab键
命令练习
1.过滤截取出网卡IP地址:
ifconfig eth0 | grep'netmask' | cut-d: -f2 | tr -d'a-zA-Z'或者
ifconfig eth0 | grep 'netmask' | cut -d: -f2 | cut -d' ' -f12.过滤截取网络地址信息换行,并且去除空格
ifconfig ens33 | grep'netmask' | tr -d'a-z' | tr ' ''\n' | grep-v'^$'3.压缩空格并截取网络Mac地址信息
ifconfig eht0 | grep'HWaddr' | tr -s' '
ifconfig eth0 | grep'HWaddr' | cut-d' '-f54.将系统中所有普通用户的用户名、密码和默认shell保存到一个文件中,要求用户名密码和默认shell之间用tab键分割
注释:-E 匹配扩展正则表达式,|代表或者,是一个扩展正则
grep'bash$' /etc/passwd | grep-v'root' | cut-d: -f1,2,7 | tr ':''\t' | tee qq.txt
相关文章:
文本处理工具
Grep工具的基本使用grep作用:grep是行过滤工具;用于根据关键字进行行过滤提示:通过alias命令设置grep别名,搜索参数时带颜色显示alias grepgrep colorauto 命令语法格式:grep [选项] 参数 文件名grep命令选项ÿ…...
C++STL详解(三)——vector的介绍和使用
文章目录vector的介绍vector的使用vector的定义方式vector的空间增长问题reserve和resizevector的迭代器使用begin 和endrbegin和rendinsert 和erasefind函数元素访问vector迭代器失效问题1:inserse插入扩容时空间销毁造成野指针问题2:erase删除或者inse…...
GEBCO海洋数据下载
一、数据集简介 GEBCO(General Bathymetric chart of the Oceans)旨在为世界海洋提供最权威的、可公开获取的测深数据集。 目前的网格化测深数据集,即GEBCO_2022网格,是一个全球海洋和陆地的地形模型,在15角秒间隔的…...
【C++容器】vector、map、hash_map、unordered_map四大容器的性能分析【2023.02.28】
摘要 vector是标准容器对数组的封装,是一段连续的线性的内存。map底层是二叉排序树。hash_map是C11之前的无序map,unordered_map底层是hash表,涉及桶算法。现对各个容器的查询与”插入“性能做对比分析,方便后期选择。 测试方案…...
ACM-蓝桥杯训练第一周
🚀write in front🚀 📝个人主页:认真写博客的夏目浅石.CSDN 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:ACM周训练题目合集.CSDN 💬总结:…...
python基础—字符串操作
(1)字符串: Python内置了一系列的数据类型,其中最主要的内置类型是数值类型、文本序列(字符串)类型、序列(列表、元组和range)类型、集合类型、映射(字典)类型…...
【Spring】通过JdbcTemplate实现CRUD操作
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 通过JdbcTemplate实现 增删查改一、添加相关依…...
实战|掌握Linux内存监视:free命令详解与使用技巧
文章目录前言一. free命令介绍二. 语法格式及常用选项三. 参考案例3.1 查看free相关的信息3.2 以MB的形式显示内存的使用情况3.3 以总和的形式显示内存的使用情况3.4 周期性的查询内存的使用情况3.5 以更人性化的形式来查看内存的结果输出四. free在脚本中的应用总结前言 大家…...
嵌入式入门必看!调试工具安装——基于 AM64x核心板
本章节内容是为评估板串口安装USB转串口驱动程序。驱动适用于CH340、CH341等USB转串口芯片。 USB转串口驱动安装 适用安装环境:Windows 7 64bit、Windows 10 64bit。 本文测试板卡为创龙科技SOM-TL64x核心板,它是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 + 单/四核Cort…...
JAVA开发(java类加载过程)
1、java语言的平台无关性。 因为java语言可以跑在java虚拟机上,所以只要能装java虚拟机的地方就能跑java程序。java语言以后缀名 .java为文件扩展名。通过java编译器javac编译成字节码文件.class 。java字节码文件通过java虚拟机解析运行。所以java语言可以说是编译…...
【vulhub漏洞复现】Thinkphp 2.x 任意代码执行
一、漏洞详情影响版本 thinkphp 2.x但是由于thinkphp 3.0版本在Lite模式下没有修复该漏洞,所以也存在该漏洞漏洞原因:e 和 /e模式匹配路由:e 配合函数preg_replace()使用, 可以把匹配来的字符串当作正则表达式执行; /e 可执行模式,…...
LeetCode 1145. 二叉树着色游戏 -- 简单搜索
二叉树着色游戏 提示 中等 199 相关企业 有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中,给出二叉树的根节点 root,树上总共有 n 个节点,且 n 为奇数,其中每个节点上的值从 1 到 n 各不相同。 最开始时: 「一…...
HyperGBM的三种Early Stopping方式
本文作者:杨健,九章云极 DataCanvas 主任架构师 很多机器学习框架如都提供了Early Stopping策略,主要用来防止模型过拟合。和模型训练提前停止的目标不同,AutoML的Early Stopping策略更多考虑的是算力消耗和模型质量的平衡。 通…...
心系区域发展,高德用一体化出行服务平台“聚”力区域未来
交通,是城市的血脉。通过对人、资源、产业的连接,交通建设往往是城市和区域经济发展的前提。不过,在度过了“要想富,先修路”的初级建设阶段后,交通产业内部也出现了挑战,诸如城市秩序、发展成本、用户使用…...
AI画图_stable-diffusion-webui安装使用指南(1)
本文章适用于: 有一定学习能力和钻研能力,遇到问题能合理使用搜索引擎尝试解决问题的人想在windows系统中尝试使用AI作画工具stable-diffusion-webui进行绘画的人有一定的计算机基础(会魔法上网、知道 python和Git)和英文阅读能力的人显卡为…...
浅谈MySQL主从复制
目录 1.MySQL主从复制是什么 2.MySQL主从复制的意义 3.MySQL主从复制原理 4.数据同步一致性问题 5.实现方式 1.MySQL主从复制是什么 MySQL主从复制就是指数据可以从一台MySQL的主节点复制到一个或多个从节点。 MySQL默认采用异步复制方式,这样从节点不用一直访…...
docker-compose安装kafka和php简单测试
docker-compose.yml内容: version: 3.1 services: zookeeper: container_name: zookeeper image: zookeeper:3.6 ports: - 2181:2181 kafka: image: wurstmeister/kafka container_name: kafka depends_on: - zookeeper …...
【蓝桥云课】快速幂
问题描述:快速求aba^bab 方法一:常规方法相乘a∗a∗a∗a∗...∗aa*a*a*a*...*aa∗a∗a∗a∗...∗a 方法二:分治方法求aba^bab ab{1,b0a,b1ab2⋅ab2,b为偶数ab−12⋅ab12,b为奇数a^b\begin{cases} 1& \text{,b0}\\ a& \text{,b1}\\ a…...
解决windows安装wxPython安装失败、速度过慢及PyCharm上wx包爆红问题
网上关于wxPython安装失败,安装速度过慢,以及安装成功后PyCharm中import wx仍然爆红的文章有很多,也特别杂,解决起来特别困难,今天在这里对问题的处理进行一个整合,希望能帮助到大家。 安装wxPython这里运用…...
封装小程序request请求[接口函数]
在这篇小程序API的Promise化文章中讲到小程序官方提供的异步API都是基于回调函数来实现的,在大量的使用这种回调函数就会造成回调地狱的问题,以及代码的可读性和可维护性差,通过对小程序API的Promise化能解决,那么本篇是来讲进行对…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...
2025-05-08-deepseek本地化部署
title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek:小白也能轻松搞定! 如何给本地部署的 DeepSeek 投喂数据,让他更懂你 [实验目的]:理解系统架构与原…...
js 设置3秒后执行
如何在JavaScript中延迟3秒执行操作 在JavaScript中,要设置一个操作在指定延迟后(例如3秒)执行,可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法,它接受两个参数: 要执行的函数&…...
