当前位置: 首页 > 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;那么本篇是来讲进行对…...

嵌入式 STM32 通讯协议--MODBUS

目录 一、自定义通信协议 1、协议介绍 2、网络协议 3、自定义的通信协议 二、MODBUS通信协议 1、概述 2、MODBUS帧结构 协议描述 3、MODBUS数据模型 4、MODBUS事务处理的定义 5、MODBUS功能码 6、功能码定义 7、MODBUS数据链路层 8、MODBUS地址规则 9、MO…...

互联网人看一看,这些神器你用过哪些?

很多小伙伴在剪辑视频的过程中经常可以看到一些语音素材&#xff0c;经常刷视频的小伙伴也可以看到很多视频中经常出现一些AI合成的声音或者音效&#xff0c;这些配音可以给视频增添很多亮点&#xff01;那么大家都是怎么将文字转语音的呢&#xff1f;今天给大家分享5款非常专业…...

Kotlin学习:5.2、异步数据流 Flow

Flow一、Flow1、Flow是什么东西&#xff1f;2、实现功能3、特点4、冷流和热流5、流的连续性6、流的构建器7、流的上下文8、指定流所在协程9、流的取消9.1、超时取消9.2、主动取消9.3、密集型任务的取消10、背压和优化10.1、buffer 操作符10.2、 flowOn10.3、conflate 操作符10.…...

EPICS synApps介绍

一、synApps是什么&#xff1f; 1&#xff09; 一个用于同步束线用户的EPICS模块集合。 2&#xff09; EPICS模块 alive, autosave, busy, calc, camac, caputRecorder, dac128V, delaygen, dxp, ip, ip330, ipUnidig, love, mca, measComp, modbus, motor, optics, quadEM,…...

Pycharm和跳板机 连接内网服务器

Pycharm和跳板机 连接内网服务器 建立配置文件 本地配置 .ssh 文件夹下配置 config 文件 Host jumpHostName xxxPort 22User xxxServerAliveInterval 30IdentityFile C:\Users\15284\.ssh\id_rsa # 通过密钥连接Host server # 同样&#xff0c;任意名字&#xff0c;随…...

mysql去重查询的三种方法

文章目录前言一、插入测试数据二、剔除重复数据方法1.方法一&#xff1a;使用distinct2.方法二&#xff1a;使用group by3.方法三&#xff1a;使用开窗函数总结前言 数据库生成环境中经常会遇到表中有重复的数据&#xff0c;或者进行关联过程中产生重复数据&#xff0c;下面介…...

PHP反序列化

文章目录简介POP链构造和Phar://题目[CISCN2019 华北赛区 Day1 Web1]Dropbox字符串逃逸简介 php序列化的过程就是把数据转化成一种可逆的数据结构&#xff0c;逆向的过程就叫做反序列化。 php将数据序列化和反序列化会用到两个函数&#xff1a; serialize 将对象格式化成有序的…...

什么蓝牙耳机打电话效果最好?通话效果好的无线蓝牙耳机

2023年了&#xff0c;TWS耳机虽说近乎人手一只了&#xff0c;但用户换新的需求和呼声依然热火朝天&#xff0c;因为我们想要听音乐、刷视频的时候都得准备&#xff0c;下面整理一些通话效果不错的耳机品牌。 第一款&#xff1a;南卡小音舱蓝牙耳机 动圈单元&#xff1a;13.3m…...

Tesseract centos环境安装,基于springboot图片提取文字

下载tesseract-orc https://github.com/tesseract-ocr/tesseract/tags下载leptonica wget http://www.leptonica.org/source/leptonica-1.78.0.tar.gz解压leptonica tar -xvf leptonica-1.78.0.tar.gz 配置编译安装leptonica 进文件夹 ./configure make make install安装aut…...

Elasticsearch7.8.0版本优化——写入速度优化

目录一、 写入速度优化的概述二、如何写入速度优化2.1、 批量数据提交2.2、 优化存储设备2.31、 合理使用合并2.4、 减少 Refresh2.5、 加大 Flush2.6、 减少副本的数量一、 写入速度优化的概述 ES 的默认配置&#xff0c;是综合了数据可靠性、写入速度、搜索实时性等因素。实使…...

css div怎么做网站/阿里域名注册网站

git config --global credential.helper store 下次git输入账号密码之后&#xff0c;就不需要输入账号密码了。...

先做网站还是先域名备案/千锋教育培训怎么样

Tomcat各个版本的下载地址包括源码&#xff1a; http://archive.apache.org/dist/tomcat **************** 选择版本 **************** **************** 选择二级版本 **************** **************** 选择bin目录 **************** **************** 找到系统对应的…...

自己可以做电子商务网站/微博上如何做网站推广

本文将解决本地Navicat连接远程MySQL服务器提示不允许连接。 一、MySQL8.0安装 1.下载wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm 2.安装rpm包 rpm -ivh mysql80-community-release-el7-1.noarch.rpm 3.检查mysql的yum源是否安装成功&#x…...

镇江怎么样/seo核心技术排名

Spring Security 借助一系列Servlet Filter 来提供安全性功能&#xff0c;但是借助Spring的小技巧&#xff0c;我们只需要配置一个Filer就可以了&#xff0c;DelegatingFilterProxy是一个特殊的Servlet Filter&#xff0c;它本身所做的工作并不多&#xff0c;只是将工作委托给一…...

湛江有帮公司做网站/抖音排名优化

Bootstrap 是当下最流行的前端框架&#xff08;界面工具集&#xff09;。 是一个用于快速开发 Web 应用程序和网站的前端框架。用于开发响应式布局、移动设备优先的 WEB 项目。 移动设备优先&#xff1a;自 Bootstrap 3 起&#xff0c;框架包含了贯穿于整个库的移动设备优先的样…...

wordpress 搜索/中国免费域名注册平台

年底将近&#xff0c;实体商业又将迎来一波新高峰。前几日&#xff0c;传统电商为了贴靠“双11”热度打造的“双12”冷淡收场。相反成立一年之久的实体互联网开放平台飞凡&#xff0c;一直以来深耕实体互联网领域&#xff0c;熟稔实体商业规律&#xff0c;随着圣诞元旦&#xf…...