文本处理大师:Linux中grep、sed和awk的绝佳教程

1 grep 搜索关键字

全局搜索正则表达式

1.1 基本格式

grep root passwd #过滤含有root关键字

在这里插入图片描述
-e 多个过滤词

grep -e root -e bash pa
grep -E "root|bin" pa # 等同于上面的命令

在这里插入图片描述
-i 忽略大小写
在这里插入图片描述
-E 过滤

grep -E "\<root" passwd ##root字符之前不能有字符
grep -E "root\>" passwd ##root字符之后不能有字符

在这里插入图片描述
-v 反向过滤
在这里插入图片描述

grep -数字 ##显示过滤行以及上面几行和下面几行
grep -n ##显示匹配的行所在行号
grep -A ##显示过滤行以及下面几行
grep -B ##显示过滤行以及上面几行
在这里插入图片描述

^westos以westos开有
westos$ 以westos结尾

在这里插入图片描述

1.2 字符匹配

w....s ##w开头s结尾中间4个任意字符
.....s ##s结尾前面5个任意字符
* ##字符出现任意

在这里插入图片描述

+ ##1次到任意次

在这里插入图片描述

在这里插入图片描述

{n} ##n此
{m,n} ##m到n次
{0,n} ##0-n次
{,n} ##0-n次
{m,} ##最少m次
(lee){2} ##lee字符串出现2次

在这里插入图片描述

2 sed 流编辑器

sed 参数 命令 处理对象
sed 参数 处理对象 -f 处理规则文件

2.1 p 显示

sed -n 5p westos ##显示第五行
sed -n 3,5p westos ##显示3到5行
sed -ne "3p;5p westos ##显示3和5行
sed -ne 1,5p westos ##1-5行
sed -ne '5,$p' westos ##5到最后以行
sed -n '/^#/p' fstab ##显示以#开头的行

在这里插入图片描述

2.2 d 删除

sed 5d westos ##删除第五行
sed '/^#/d' fstab ##把#开头的行删除
sed '/^UUID/!d' fstab ##除了UUID以外的行都删除
sed -e '5,$d' westos ## 同时操作第5行和最后一行

在这里插入图片描述

2.3 a 添加

sed '1ahello' fstab # 在第一行后面添加

在这里插入图片描述

sed '/^UUID/a666' fstab # 符合要求的行添加

在这里插入图片描述

sed '/^UUID/a6\n66' fstab # 换行添加

在这里插入图片描述

2.4 i 插入

sed '1ihello' fstab

在这里插入图片描述

2.5 w 输出重定向

sed '/^UUID/w westofile' westos ##把westos中UUID开头的行写入westosfile中

在这里插入图片描述

2.6 r 合并文件

在这里插入图片描述

2.7 s 替换

2.7.1 普通替换

sed 's/bin/6666/g' passwd # 替换bin为6666

在这里插入图片描述

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

2.7.2 转义字符替换

sed 's/\//???/g' passwd
sed 's@/@???@g' passwd # 两条命令是等效的

在这里插入图片描述

2.8 f 执行文件中多条命令

sed -f rule fstab

在这里插入图片描述

3 awk 报告生成器

截取所需要的数据

3.1 显示列

awk -F : '{print $0}' passwd
awk -F : '{print $1}' passwd
awk -F : '{print $1,$7}' passwd # 显示第一列和第7列

在这里插入图片描述

3.2 条件

awk -F : '/^root/{print $1,$7}' passwd # // 里面的内容是条件判断
awk -F : '/^root/||/^lp/{print}' passwd # 或者
awk -F : '/^root/&&/bash$/{print}' passwd # 并且

在这里插入图片描述

awk -F : '/bash$/{print NR}' passwd # 行
awk -F : '/bash$/{print $NF}' passwd # 列

在这里插入图片描述

awk -F : 'BEGIN{N=0}/bash$/{N++}END{print N}' passwd

在这里插入图片描述

awk -F : '$3!~/^0/&&/bash$/{print}' passwd # 第三列,以0开头,去掉后,并且剩余的行结尾是bash

在这里插入图片描述

4 编写脚本

4.1 请显示系统中能被su命令切换的用户名称

grep -E "\<bash$|\<sh$" /etc/passwd

在这里插入图片描述

4.2 请显示网卡IP

ifconfig ens160 | awk '/inet\>/{print $2}'

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio真机运行时提示“安装失败”

用中兴手机真机运行没问题&#xff0c;用Vivo运行就提示安装失败。前提&#xff0c;手机已经打开了调试模式。 报错 Android Studio报错提示&#xff1a; Error running app The application could not be installed: INSTALL_FAILED_TEST_ONLY 手机报错提示&#xff1a; 修…

Leetcode—69.x的平方根【简单】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—69.x的平方根 直接法实现代码 int mySqrt(int x) {long long i 0;while(i * i < x) {i;}if(i * i > x) {return i - 1;}return i; }运行结果 二分法实现代码 int mySqrt(int x) {long long left 0, right (l…

联系作者方式的教程

首先你应该目前是在付费资源运行效果的展示文章页面&#xff0c;如下所示 然后一直往下滑&#xff0c;滑到这个文章的最下面&#xff0c;就可以看到我的推广名片&#xff0c;最后点击这个名片就可以获取到我的联系方式了~

golang 库之「依赖注入」

文章目录 1. 写在最前面2. 依赖注入2.1 使用场景2.2 框架对比 3. fx 框架使用场景示例3.1 示例3.2 golang 原生的库3.3 fx 库3.4 对比3.4.1 如上两种实现方式对比3.4.2 关于过度设计3.4.3 感悟 4. 碎碎念5. 参考资料 1. 写在最前面 同事在技术分享的时候用了 golang 的 fx 框架…

翻译环境(编译和链接)(简单讲解,理解图就行)

前言 这是我们学习代码的最重要的一个知识点之一&#xff0c;因为我们要去运行一个代码并不是简单的去直接出结果&#xff0c;而是经过了很多我们看不到的步骤&#xff0c;我们在这里以C语言为例子在Linux的环境下讲解&#xff0c;大家没有学过Linux的不用担心&#xff0c;最后…

长安链可验证数据库,保证数据完整性的可信存证方案

近日&#xff0c;长安链发布“可验证数据库”实现了链上链下协同存储及数据完整性保证&#xff0c;显著提升长安链存储能力的可扩展性。 可信存证是联盟链最典型的应用场景&#xff0c;被广泛应用在司法、工业、农业、贸易等领域。联盟链的存证应用主要分为两个阶段&#xff1…

Spark算子

一、编写spark程序的准备工作&#xff08;程序入口 SparkContext&#xff09; 1.创建SparkConf val conf new SparkConf().setMaster("local[2]").setAppName("hello-app") 2.创建sparkContext val sc: SparkContext new SparkContext(conf) 二、基…

SpringMVC使用AOP监听方法推送数据

导入aop的maven依赖 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.6.12</version> </dependency>创建一个spring的XML文件编写aop配置 <?xml version"1.0" …

Swift 常用类别整理

生成颜色&#xff0c;传入16进制数字生成对应颜色 个人不喜欢传字符串的写法&#xff0c;比如 "0x0080FF" 或者 "0080FF"&#xff0c;原因如下&#xff1a; 传了字符串最后还是要解析成数字参与颜色运算的&#xff0c;需要额外做字符串转数字的操作&…

C++套接字库sockpp介绍

sockpp是一个开源、简单、现代的C套接字库&#xff0c;地址为&#xff1a;https://github.com/fpagliughi/sockpp&#xff0c;最新发布版本为0.8.1&#xff0c;license为BSD-3-Clause。目前支持Linux、Windows、Mac上的IPv4、IPv6和Unix域套接字。其它*nix和POSIX系统只需很少的…

链表经典OJ题(链表回文结构,链表带环,链表的深拷贝)

目录 前言 1.反转一个单链表。 2. 给定一个带有头结点 head 的非空单链表&#xff0c;返回链表的中间结点。 3.链表的回文结构。 4.链表带环问题&#xff08;*****&#xff09; 4.1是否带环 4.2 入环的节点 5.随机链表的复制&#xff08;链表的深拷贝&#xff09; 前言…

Http状态码502常见原因及排错思路(实战)

Http状态码502常见原因及排错思路 502表示Bad Gateway。当Nginx返回502错误时&#xff0c;通常表示Nginx作为代理服务器无法从上游服务器&#xff08;如&#xff1a;我们的后端服务器地址&#xff09;获取有效的响应。导致这种情况的原因有很多&#xff1a; 后端服务器故障ngin…