文本三剑客

目录

grep

awk

工具介绍

awk 命令

awk 常见的内置变量可直接用

awk 命令使用举例

打印磁盘已经使用情况

打印字符串

打印字符串确定文件有多少行

提取 ip地址

打印 /etc/passwd 所有用户名

打印多列内容

提取 /etc/passwd 以 root 开头的行

打印倒数第二行

当前处理的行的行号

NR==n 代表行号,取第几行

NR%2==0 取偶数行;NR%2==1 取奇数行

NR==m,NR==n 取 m到n 区间行

取 uid 数值范围

统计 /etc/fstab 文件中每个文件系统类型出现的次数

提取主机名并放入原文件

统计 /etc/fstab 文件中每个单词出现的次数

提取字符串 Yd$C@M05MB%9&Bdh7dq+YVixp3vpw 中的所有数字

sed

sed 命令

搜索替代

sed 命令使用举例

查看文件,打印全部内容

打印指定行内容

根据地址,打印指定多行内容

打印多行后退出

打印最后一行,使用通配符 $

过滤关键字

#,/关键字/p’ 从第 #行 开始匹配

‘/关键字/,#’ 找到第 #个 关键字为止

打印文本的奇数/偶数行

删除指定行

删除指定的多行

删除汇总

插入

变量

分组调用

提取ip地址


grep

—— 格式:grep 选项 查找条件 目标文件

选项作用
-color=auto对匹配到的文本着色显示,自带的功能
-m 数字匹配 多少次后停止 (多个匹配只取第一个)
-v显示不被 pattern 匹配到的行,即取反
-i忽略字符大小写
-n显示匹配的行号
-c统计匹配的行数
-o仅显示匹配到的字符串
-q静默模式,不输出任何信息
-A匹配到的行后 n 行显示出来
-B前 n 行
-C前后各 n 行
-e实现多个选项间的逻辑或者关系
-E使用ERE,相当于 egrep
-F不支持正则表达式,相当于 fgrep
-ffile 根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件
-r递归目录,但不处理软链接
-R递归目录,但处理软链接
-w匹配整个单词

awk

工具介绍

  • awk 是一种处理文本文件的语言,是一个强大的文本分析工具

  • 可以在无交互的模式下实现复杂的文本操作

  • 相较于 sed 常作用于一整个行的处理,awk 则比较倾向于一行当中分成数个字段来处理,因为awk 相当适合小型的文本数据

awk 命令

—— 格式:awk 选项 '表达式{处理动作}'

选项作用
-F指定分隔符
-v自定义变量
-f脚本

awk 常见的内置变量可直接用

选项作用
FS列分割符;指定每行文本的字段分隔符,默认为空格或制表位;与 "-F" 作用相同
NF当前处理的行的字段个数
NR当前处理的行的行号(序数)
$0当前处理的行的整行内容
$n当前处理行的第n个字段(第n列)
FILENAME被处理的文件名
RS行分隔符;awk 从文件上读取资料时,将根据 RS 的定义把资料切割成许多条记录,而 awk 一次仅读入一条记录,以进行处理,预设值是 ’\n’
OFS输出时的分隔符

awk 命令使用举例

打印磁盘已经使用情况

打印字符串

打印字符串确定文件有多少行

提取 ip地址

打印 /etc/passwd 所有用户名

打印多列内容

提取 /etc/passwd 以 root 开头的行

打印倒数第二行

当前处理的行的行号

NR==n 代表行号,取第几行

NR%2==0 取偶数行;NR%2==1 取奇数行

NR==m,NR==n 取 m到n 区间行

取 uid 数值范围

统计 /etc/fstab 文件中每个文件系统类型出现的次数

提取主机名并放入原文件

统计 /etc/fstab 文件中每个单词出现的次数

提取字符串 Yd$C@M05MB%9&Bdh7dq+YVixp3vpw 中的所有数字


sed

—— 格式:sed 选项 {脚本(如果没有其他脚本)} 输入文件

—— sed 是从文件或管道中读取一行,处理一行,输出一行;再读取一行,再处理一行,再输出一行,直到最后一行;每当处理一行时,把当前处理的行存储在临时缓冲区中,称为模式空间(PatternSpace),接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾;一次处理一行的设计模式使得 sed 性能很高,sed 在读取大文件时不会出现卡顿的现象;如果使用 vi 命令打开 几十M上百M 的文件,明显会出现有卡顿的现象,这是因为 vi 命令打开文件是一次性将文件加载到内存,然后再打开;sed 就避免了这种情况,一行一行的处理,打开速度非常快,执行速度也很快

sed 命令

—— sed 选项 自身脚本语法 支持标准输入管道

选项作用
-n不输出模式空间内容到屏幕,即不自动打印
-e多项编辑
-f从指定文件中读取编译脚本
-r使用扩展正则表达式
-i备份文件并原处编辑

常用操作

选项作用
s替换,替换指定字符
d删除,删除选定的行
a增加,在当前行下面增加一行指定内容
i插入,在选定行上面插入一行指定内容
c替换,将选定行替换为指定内容
Y字符转换,转换前后的字符长度必须相同
p打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容; 如果有非打印字符,则以 AscII 码输出。其通常与_n"选项一起使用
=打印行号
l(小写的L)打印数据流中的文本和不可打印的 ASCII 字符(比如结束符 s、制表符 \t)

搜索替代

—— 格式:sed 行范围 s/旧字符串/新字符串/替换标记

—— 替换标记

  1. 数字 :表明新字符串将替换第几处匹配的地方

  2. g : 表明新字符串将会替换所有匹配的地方

  3. p : 打印与替换命令匹配的行,与 -n 一起使用

  4. w 文件 :将替换的结果写到文件中

将test里凡是带r..t的字段后面都加上er

—— sed -n 's/r..t/&er/g' test

sed 命令使用举例

sed ''    :交互模式输入一行,自动打印一行相同的
​
sed -n '' :交互模式输入一行,关闭自动打印
​
sed -n '' :加上p又恢复自动打印

查看文件,打印全部内容

打印指定行内容

根据地址,打印指定多行内容

打印多行后退出

打印最后一行,使用通配符 $

过滤关键字

#,/关键字/p’ 从第 #行 开始匹配

‘/关键字/,#’ 找到第 #个 关键字为止

打印文本的奇数/偶数行

删除指定行

删除指定的多行

删除汇总
sed '$d'  test                  #删除最后一行
​
sed '/^$/d' test              #删除空格
​
sed 'd' test                     #全部删除
​
sed '/d$/d' test              #删除以d结尾的行
​
sed '/d$/!d' test             #!取反,删除除了以d结尾的行
​
sed '/a/,/c/d'   test         #删除从a开头的到c开头的,不论a-c之间有多少行都会被删除,直到匹配不到为止
​

插入

sed '/aa/c xxx' test      #将第一行的aa替换成xxx,c默认是替换第一行
​
sed '3c hhh'  test        #将第三行,全部替换成hhh
​
sed '1,3a  6666' test     #在1-3行的下面增加6666
​
sed '1,3i  6666' test     #在1-3行上面增加6666
​
sed '2r /opt/hyh' test   #r读入,在第二行下面,读入opt下的hyh文件内容
​

变量

sed -nr "/$name/p" /etc/passwd 
#提取变量用户名
#变量需要加双引号
​

分组调用

#只有扩展正则表达式才能支持分组。
​
#分组使用()(),调用第一段使用\1
​
echo  11aaxx |sed -r 's/(11)(aa)(xx) /\1/'   #调用第一组
​
11
​
echo  11aaxx |sed -r 's/(11)(aa)(xx) /\2/'   #调用第二组
​
aa
​
echo  11aaxx |sed -r 's/(11)(aa)(xx) /\1\2/'  #调用第一、二组
​
11aa
​
echo  11aaxx |sed -r 's/(11)(aa)(xx) /\1\2\3/'  #调用所有分组
​
11aaxx
​

提取ip地址
ifconfig ens32 |sed -rn '2s/.*(inet) ([0-9.]+)  (netmask) ([0-9.]+)  (broadcast) ([0-9.]+).*/\2/p'

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spark将execl表格文件导入到mysql中

实现代码 excel所需的pom依赖 案例实现 实现代码 package excel_mysqlimport org.apache.spark.sql.SparkSession import java.util.Propertiesobject t1 {def main(args: Array[String]): Unit {val spark SparkSession.builder().appName("ExcelToMySQL") /…

网络运维与网络安全 学习笔记2023.11.29

网络运维与网络安全 学习笔记 第三十天 今日更新太晚啦!!! 主要是今天工作时挨了一天骂,服了,下次记得骂的轻一点!!! (要不是为了那点微薄的薪资,谁愿意听你…

数据结构-二叉树(2)

3.4堆的应用 3.4.1 堆排序 堆排序即利用堆的思想来进行排序,总共分为两个步骤: 1. 建堆 1.升序:建大堆; 2.降序:建小堆。 2. 利用堆删除思想来进行排序 这种写法有两个缺点: 1、先有一个堆的数据结构 …

Bert-VITS2本地部署遇到的错误

关于Bert-VITS2本地部署遇到的错误 1、在下载python中相关依赖时报错 building ‘hdbscan._hdbscan_tree’ extension error: Microsoft Visual C 14.0 or greater is required. Get it with “Microsoft C Build Tools”: https://visualstudio.microsoft.com/visual-cpp-bu…

[密码学]DES

先声明两个基本概念 代换(substitution),用别的元素代替当前元素。des的s-box遵循这一设计。 abc-->def 置换(permutation),只改变元素的排列顺序。des的p-box遵循这一设计。 abc-->bac DES最核心的算法就是…

【人工智能Ⅰ】实验2:遗传算法

实验2 遗传算法实验 一、实验目的 熟悉和掌握遗传算法的原理、流程和编码策略,理解求解TSP问题的流程并测试主要参数对结果的影响,掌握遗传算法的基本实现方法。 二、实验原理 旅行商问题,即TSP问题(Traveling Salesman Proble…

MySQL 中的锁(二)

8.4. 意向锁 但是在上面的例子这里头有两个问题: 如果我们想对大楼整体上 S 锁,首先需要确保大楼中的没有正在维修的楼层,如果有正在维修的楼层,需要等到维修结束才可以对大楼整体上 S 锁。 如果我们想对大楼整体上 X 锁&#xf…

【JUC】十六、LockSupport类实现线程等待与唤醒

文章目录 1、LockSupport2、wait和notify存在的问题3、await和signal存在的问题4、park和unpark方法5、LockSupport用法示例6、Permit不会累积7、面试 1、LockSupport 线程等待和唤醒的方式有: 使用Object的wait方法让对象上活动的线程等待,使用notify…

OpenCV | 图像梯度sobel算子、scharr算子、lapkacian算子

import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline 1、sobel算子 img cv2.imread(pie.png,cv2.IMREAD_GRAYSCALE) cv2.imshow(img,img) cv2.waitKey() cv2.destroyAllWindows() pie图片 dst cv2.S…

enote笔记法之附录2——5w1h2k关联词(ver0.22)

enote笔记法之附录2——5w1h2k关联词(ver0.22) 最上面的是截屏的完整版,分割线下面的是纯文字版本: 作者姓名(本人的真实姓名):胡佳吉 居住地:上海 作者网名:EverSt…

将原生Spring项目中某些配置文件中的易变内容参数化

😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…

Linux:windows 和 Linux 之间文本格式转换

背景 在 Windows 上编辑的文件,放到 Linux 平台,有时会出现奇怪的问题,其中有一个是 ^M 引起的,例如这种错误: /bin/bash^M: bad interpreter 这个问题相信大家也碰到过,原因是 Windows 和 Linux 关于换行的…

【计算机网络】虚拟路由冗余(VRRP)协议原理与配置

目录 1、VRRP虚拟路由器冗余协议 1.1、协议作用 1.2、名词解释 1.3、简介 1.4、工作原理 1.5、应用实例 2、 VRRP配置 2.1、配置命令 1、VRRP虚拟路由器冗余协议 1.1、协议作用 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF…

输入通道数 和 输出通道数 的理解

输入通道数(in_channels)输出通道数(out_channels) 在卷积神经网络中通常需要输入 in_channels 和 out_channels ,即输入通道数和输出通道数,它们代表什么意思呢? 输入通道数(in_c…

报错解决:You may need an additional loader to handle the result of these loaders.

报错信息如下 vue 项目 Module parse failed: Unexpected token (1:9) File was processed with these loaders:* ./node_modules/vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js* ./node_modules/babel-loader/lib/index.js* ./node_modules/eslint-loader/in…

联想SR660 V2服务器使用默认用户登录BMC失败

新到了一台服务器,使用默认用户登录BMC失败 登录失败提示:账号或密码错误 解决方案: 1、重置BMC 2、新增用户 开机后在出现 ThinkServer 界面按 F1,进入 BIOS 界面 进入 System Settings-BMC Configuration 菜单相关&#xf…

实施工程师运维工程师面试题

Linux 1.请使用命令行拉取SFTP服务器/data/20221108/123.csv 文件,到本机一/data/20221108目录中。 使用命令行拉取SFTP服务器文件到本机指定目录,可以使用sftp命令。假设SFTP服务器的IP地址为192.168.1.100,用户名为username,密…

基于傅里叶变换的运动模糊图像恢复算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、傅里叶变换与图像恢复 4.2、基于傅里叶变换的运动模糊图像恢复算法原理 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 %获取角度 img…

Linux常用命令----touch命令

文章目录 Linux操作系统中,touch 命令是一个常用且强大的工具,主要用于创建空文件或设置文件的时间戳。本文将详细介绍 touch 命令的各种参数及其用法,并通过实例演示来加深理解。 1. touch命令基础 touch 命令的基本语法格式为&#xff1a…

轻量封装WebGPU渲染系统示例<39>- emissive和arm纹理支持(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/DynamicShaderBuilding2.ts 当前示例运行效果: 此示例基于此渲染系统实现,当前示例TypeScript源码如下: export class DynamicShaderBuildi…