当前位置: 首页 > news >正文

文本处理工具

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 -1

Sort工具的基本使用


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: file1

diff其他小技巧:

有时我们需要以一个文件为标准,去修改其他文件,并且 修改的地方较多时,我们可以通过打补丁的方式完成。

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' < filename

tr命令选项:

  • -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' ' -f1

2.过滤截取网络地址信息换行,并且去除空格

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' '-f5

4.将系统中所有普通用户的用户名、密码和默认shell保存到一个文件中,要求用户名密码和默认shell之间用tab键分割

注释:-E 匹配扩展正则表达式,|代表或者,是一个扩展正则
grep'bash$' /etc/passwd | grep-v'root' | cut-d: -f1,2,7 | tr ':''\t' | tee qq.txt

相关文章:

文本处理工具

Grep工具的基本使用grep作用&#xff1a;grep是行过滤工具&#xff1b;用于根据关键字进行行过滤提示&#xff1a;通过alias命令设置grep别名&#xff0c;搜索参数时带颜色显示alias grepgrep colorauto 命令语法格式&#xff1a;grep [选项] 参数 文件名grep命令选项&#xff…...

C++STL详解(三)——vector的介绍和使用

文章目录vector的介绍vector的使用vector的定义方式vector的空间增长问题reserve和resizevector的迭代器使用begin 和endrbegin和rendinsert 和erasefind函数元素访问vector迭代器失效问题1&#xff1a;inserse插入扩容时空间销毁造成野指针问题2&#xff1a;erase删除或者inse…...

GEBCO海洋数据下载

一、数据集简介 GEBCO&#xff08;General Bathymetric chart of the Oceans&#xff09;旨在为世界海洋提供最权威的、可公开获取的测深数据集。 目前的网格化测深数据集&#xff0c;即GEBCO_2022网格&#xff0c;是一个全球海洋和陆地的地形模型&#xff0c;在15角秒间隔的…...

【C++容器】vector、map、hash_map、unordered_map四大容器的性能分析【2023.02.28】

摘要 vector是标准容器对数组的封装&#xff0c;是一段连续的线性的内存。map底层是二叉排序树。hash_map是C11之前的无序map&#xff0c;unordered_map底层是hash表&#xff0c;涉及桶算法。现对各个容器的查询与”插入“性能做对比分析&#xff0c;方便后期选择。 测试方案…...

ACM-蓝桥杯训练第一周

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石.CSDN &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f4e3;系列专栏&#xff1a;ACM周训练题目合集.CSDN &#x1f4ac;总结&#xff1a…...

python基础—字符串操作

&#xff08;1&#xff09;字符串&#xff1a; Python内置了一系列的数据类型&#xff0c;其中最主要的内置类型是数值类型、文本序列&#xff08;字符串&#xff09;类型、序列&#xff08;列表、元组和range&#xff09;类型、集合类型、映射&#xff08;字典&#xff09;类型…...

【Spring】通过JdbcTemplate实现CRUD操作

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 通过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虚拟机上&#xff0c;所以只要能装java虚拟机的地方就能跑java程序。java语言以后缀名 .java为文件扩展名。通过java编译器javac编译成字节码文件.class 。java字节码文件通过java虚拟机解析运行。所以java语言可以说是编译…...

【vulhub漏洞复现】Thinkphp 2.x 任意代码执行

一、漏洞详情影响版本 thinkphp 2.x但是由于thinkphp 3.0版本在Lite模式下没有修复该漏洞&#xff0c;所以也存在该漏洞漏洞原因&#xff1a;e 和 /e模式匹配路由&#xff1a;e 配合函数preg_replace()使用, 可以把匹配来的字符串当作正则表达式执行; /e 可执行模式&#xff0c…...

LeetCode 1145. 二叉树着色游戏 -- 简单搜索

二叉树着色游戏 提示 中等 199 相关企业 有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中&#xff0c;给出二叉树的根节点 root&#xff0c;树上总共有 n 个节点&#xff0c;且 n 为奇数&#xff0c;其中每个节点上的值从 1 到 n 各不相同。 最开始时&#xff1a; 「一…...

HyperGBM的三种Early Stopping方式

本文作者&#xff1a;杨健&#xff0c;九章云极 DataCanvas 主任架构师 很多机器学习框架如都提供了Early Stopping策略&#xff0c;主要用来防止模型过拟合。和模型训练提前停止的目标不同&#xff0c;AutoML的Early Stopping策略更多考虑的是算力消耗和模型质量的平衡。 通…...

心系区域发展,高德用一体化出行服务平台“聚”力区域未来

交通&#xff0c;是城市的血脉。通过对人、资源、产业的连接&#xff0c;交通建设往往是城市和区域经济发展的前提。不过&#xff0c;在度过了“要想富&#xff0c;先修路”的初级建设阶段后&#xff0c;交通产业内部也出现了挑战&#xff0c;诸如城市秩序、发展成本、用户使用…...

AI画图_stable-diffusion-webui安装使用指南(1)

本文章适用于: 有一定学习能力和钻研能力&#xff0c;遇到问题能合理使用搜索引擎尝试解决问题的人想在windows系统中尝试使用AI作画工具stable-diffusion-webui进行绘画的人有一定的计算机基础&#xff08;会魔法上网、知道 python和Git&#xff09;和英文阅读能力的人显卡为…...

浅谈MySQL主从复制

目录 1.MySQL主从复制是什么 2.MySQL主从复制的意义 3.MySQL主从复制原理 4.数据同步一致性问题 5.实现方式 1.MySQL主从复制是什么 MySQL主从复制就是指数据可以从一台MySQL的主节点复制到一个或多个从节点。 MySQL默认采用异步复制方式&#xff0c;这样从节点不用一直访…...

docker-compose安装kafka和php简单测试

docker-compose.yml内容&#xff1a; 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 …...

【蓝桥云课】快速幂

问题描述&#xff1a;快速求aba^bab 方法一&#xff1a;常规方法相乘a∗a∗a∗a∗...∗aa*a*a*a*...*aa∗a∗a∗a∗...∗a 方法二&#xff1a;分治方法求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安装失败&#xff0c;安装速度过慢&#xff0c;以及安装成功后PyCharm中import wx仍然爆红的文章有很多&#xff0c;也特别杂&#xff0c;解决起来特别困难&#xff0c;今天在这里对问题的处理进行一个整合&#xff0c;希望能帮助到大家。 安装wxPython这里运用…...

封装小程序request请求[接口函数]

在这篇小程序API的Promise化文章中讲到小程序官方提供的异步API都是基于回调函数来实现的&#xff0c;在大量的使用这种回调函数就会造成回调地狱的问题&#xff0c;以及代码的可读性和可维护性差&#xff0c;通过对小程序API的Promise化能解决&#xff0c;那么本篇是来讲进行对…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)

目录 &#x1f50d; 若用递归计算每一项&#xff0c;会发生什么&#xff1f; Horners Rule&#xff08;霍纳法则&#xff09; 第一步&#xff1a;我们从最原始的泰勒公式出发 第二步&#xff1a;从形式上重新观察展开式 &#x1f31f; 第三步&#xff1a;引出霍纳法则&…...

今日行情明日机会——20250609

上证指数放量上涨&#xff0c;接近3400点&#xff0c;个股涨多跌少。 深证放量上涨&#xff0c;但有个小上影线&#xff0c;相对上证走势更弱。 2025年6月9日涨停股主要行业方向分析&#xff08;基于最新图片数据&#xff09; 1. 医药&#xff08;11家涨停&#xff09; 代表标…...