shell编程之sed

sed 是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,处理时,把当前处理的行存储在临时缓冲区中,称为模式空间,接着用sed 命令处理缓冲区中的内容,处理完成 后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变。

sed基本语法

sed OPTIONS… [SCRIPT] [INPUTFILE…]
常用的选项:
-n --quiet --silent :不输出模式空间中的内容,使用安静模式,在一般 sed 的用法中,所有来自STDIN的数据一般都会被列出到屏幕上,但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行才会被列出来;
-i :直接编辑原文件,而不是由屏幕输出,默认不对原文件进行操作;
-e :直接在命令行模式上进行 sed 的动作编辑,多个子命令之间也可以用分号隔开; sed - e
'command1 ; command2...' filename 或者 sed - e 'command1' - e 'command2' ……filename
-r :使用扩展正则表达式;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以执行 filename 内的 sed 动作。

模拟空间的编辑操作

地址定界

 

练习题grep及sed

grep "bash$" /etc/passwdgrep -E"[0-9]{3,4}" /etc/passwdgrep -E"^\s+.+" /etc/grub2.cfgnetstat -tan  grep -E "LISTEN\S*$fdisk -lgrep -E '/dev/(sd hd)[a-2]ldd /usr/bin/cat grep -o "/.*/.*\s"echo /root/ce/lk.txt | grep -oE '/[^/]+' | sed -nr '3 s%/([^/]+)%\1% p'grep -E "^(.+):.*\1$" /etc/passwd14.
grep '#[[:space:]]\{1,\}[^[:space:]]' /etc/fstab15.
grep '\<to.*to\>' /etc/rc.d/rc.local
sed -n '/to.*to/ p' /etc/rc.d/rc.local16.
grep '\bs.*d\b' /etc/inittab17.
ifconfig | grep -oE '([1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'18.
grep -E 'Failed|FAILED' /var/log/secure
awk '/(Failed|FAILED)/ {print $0}' /var/log/secure
sed -n '/(Failed|FAILED)/p' /var/log/secure19.
grep 'bash$' /etc/passwd

 

1.
vim /root/test.txt
sed -p /root/test.txt
2.
sed -n '3~10 p' /root/test.txt
awk 'NR>=3&&NR<=10 {print $0}' /root/test.txt
3.
sed -n '/root/p' /root/test.txt
4.
sed -n '15~$ d' /root/test.txt 
5.
sed '/bash/d' /root/test.txt 
6.
sed -n 's/root/toor/gp' /root/test.txt 
7.
sed -n's@/sbin/nologin@/bim/login@g' /root/test.txt 
8.
sed -n '5,10 s/[0-9]//gp' /root/test.txt 
9.
sed -n 's/[^a-zA-Z0-9]//gp' /root/test.txt
10.
sed '20,$s/^.*$/aaa:&/g' test.txt
11、复制/etc/grub2.cfg到/root/grub2.cfg,删除文件中所有以空白开头的行行首的空白字符;
[root@localhost ~]# sed 's/^[[:space:]]//' grub2.cfg
12、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
[root@localhost ~]# sed 's/^#[[:space:]]*//' /etc/fstab
13、给文件/root/anaconda-ks.cfg每一行行首增加#号
[root@localhost ~]# sed 's/^.*$/#&/' /root/anaconda-ks.cfg
14、在/etc/fstab文件中不以#开头的行的行首增加#号;
[root@localhost ~]# sed 's/^[^#]/#&/' /etc/fstab
15、处理/etc/sysconfig/network-scripts/路径,使用grep和sed命令取出其目录名和基名
[root@localhost ~]# echo "/etc/sysconfig/network-scripts/" |sed -r
's#^/(.*)/(.*)/#\1#' etc/sysconfig
[root@localhost ~]# echo "/etc/sysconfig/network-scripts/" |sed -r
's#^/(.*)/(.*)/#\2#'
network-scripts
[root@localhost ~]# echo "/etc/httpd/conf.d/host.conf" | sed -r 's#(^/.*/)[^/].*#\1#'
/etc/httpd/conf.d/
[root@localhost ~]# echo "/etc/httpd/conf.d/host.conf" | sed -r
's#^/.*/([^/].*)#\1#'
host.conf
[root@localhost ~]# basename /etc/httpd/conf.d/host.conf
host.conf
[root@localhost ~]# dirname /etc/httpd/conf.d/host.conf
/etc/httpd/conf.d
[root@localhost ~]# echo "/etc/sysconfig/network-scripts/"|grep -o -E "
[^/]+/?
$"|grep -o -E "^[^/]+"
network-scripts
[root@localhost ~]# echo "/etc/sysconfig/network-scripts/"|grep -o -E "
(^/([^/]+/)*[^[:space:]])|^/"|grep -o -E "^/([^/]+/)*"|grep -o -E "
(/[^/]+)+|^/"
/etc/sysconfig
16、利用sed 取出ifconfig命令中本机的IPv4地址
[root@localhost ~]# ifconfig |sed -n '2p' | sed -r "s/.*inet[[:space:]]*//"
|
sed -r "s/[[:space:]]*netmask.*//"
192.168.168.128
17、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数
[root@localhost ~]# ls /mnt/Packages/|grep "rpm$"|sed -r 's@.*\.
(.*)\.rpm@\1@'|sort|uniq -c
1085 i686
1216 noarch
2319 x86_64

1.
sed -i 's/^[[:space:]]\+//' /etc/grub2.conf
2.
sed -i 's/^#[[:space:]]\+//' /etc/fstab
3.
sed -i 's/^/#/' /root/install.log
4.
sed -i '/^[^#]/s/^/#/' /etc/fstab
5.
ifconfig | sed -n '/inet /{s/^.*inet \(.*\) 
netmask.*/\1/p}'
6.
- 临时关闭(重启后失效):setenforce 0
- 永久关闭(需要修改配置文件):编辑 /etc/selinux/
config 文件,将 SELINUX=enforcing 或 SELINUX=
permissive 修改为 SELINUX=disabled 。
7.
vi /etc/hosts

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

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

相关文章

一文学习开源框架OkHttp

OkHttp 是一个开源项目。它由 Square 开发并维护&#xff0c;是一个现代化、功能强大的网络请求库&#xff0c;主要用于与 RESTful API 交互或执行网络通信操作。它是 Android 和 Java 开发中非常流行的 HTTP 客户端&#xff0c;具有高效、可靠、可扩展的特点。 核心特点 高效…

多目标优化算法:多目标极光优化算法(MOPLO)求解ZDT1、ZDT2、ZDT3、ZDT4、ZDT6,提供完整MATLAB代码

一、极光优化算法 极光优化算法&#xff08;Polar Lights Optimization, PLO&#xff09;是2024年提出的一种新型的元启发式优化算法&#xff0c;它从极光这一自然现象中汲取灵感。极光是由太阳风中的带电粒子在地球磁场的作用下&#xff0c;与地球大气层中的气体分子碰撞而产…

【贪心算法第二弹——2208.将数组和减半的最小操作数】

1.题目解析 题目来源 2208.将数组和减半的最小操作数——力扣 测试用例 2.算法原理(贪心策略) 3.实战代码 class Solution { public:int halveArray(vector<int>& nums) {priority_queue<double> hash;double sum 0.0;for(auto e : nums){hash.push(e);sum …

2024最新python使用yt-dlp

2024最新python使用yt-dlp下载YT视频 1.获取yt的cookie1&#xff09;google浏览器下载Get cookies.txt LOCALLY插件2&#xff09;导出cookie 2.yt-dlp下载[yt-dlp的GitHub地址](https://github.com/yt-dlp/yt-dlp?tabreadme-ov-file)1&#xff09;使用Pycharm(2024.3)进行代码…

深入理解下oracle 11g block组成

深层次说&#xff0c;oracle数据库的最少组成单位应该是块&#xff0c;一般默认情况下&#xff0c;oracle数据库的块大小是8kb&#xff0c;其中存储着我们平常所需的数据。我们在使用过程中&#xff0c;难免会疑问道&#xff1a;“oracle数据块中到底是怎样组成的&#xff0c;平…

2024年12月Gesp七级备考知识点拾遗第一期(图的定义及遍历)

目录 总序言 知识点拾遗​编辑 度数 环 二叉树 图的遍历 深度优先 广度优先 连通与强连通 有什么不同 构成分别至少需要几条边&#xff08;易错题&#xff09;&#xff1f; 无向连通图 有向强连通图 完全图 什么是完全图 无向完全图最少边数 有向完全图最少边…

家庭智慧工程师:如何通过科技提升家居生活质量

在今天的数字化时代&#xff0c;家居生活已经不再只是简单的“住”的地方。随着物联网&#xff08;IoT&#xff09;、人工智能&#xff08;AI&#xff09;以及自动化技术的快速发展&#xff0c;越来越多的家庭开始拥抱智慧家居技术&#xff0c;将他们的家变得更加智能化、便捷和…

图像处理实验报告

实验一 图像处理的MATLAB基础 实验目的&#xff1a;熟悉数字图象处理的基本软件工具和操作 实验内容&#xff1a;Matlab应用复习&#xff0c;矩阵产生、操作&#xff1b;矩阵运算以及字符运算。 1.利用增量产生向量[0,2,4,6,8,10]。 2.利用magic(n)函数产生7维魔鬼矩阵A&am…

SpringBoot+SpringCloud面试题整理附答案

什么是SpringBoot&#xff1f; 1、用来简化spring初始搭建和开发过程使用特定的方式进行配置(properties或者yml文件) 2、创建独立的spring引用程序main方法运行 3、嵌入Tomcat无需部署war包&#xff0c;直接打成jar包nohup java -jar – & 启动就好 4、简化了maven的配置 …

Linux之管道,system V的共享内存,消息队列和信号量

Linux之管道&#xff0c;systemV共享内存和信号量 一.进程间通信1.1进程间通信的目的1.2进程间通信的方式 二.管道2.1管道的概念2.2匿名管道2.3命名管道 三.system V3.1共享内存3.2消息队列3.3信号量 一.进程间通信 在我们之前有关Linux指令的学习时我们使用过“|”这个命令&a…

Figma入门-基本操作制作登录页

Figma入门-基本操作制作登录页 前言 在之前的工作中&#xff0c;大家的原型图都是使用 Axure 制作的&#xff0c;印象中 Figma 一直是个专业设计软件。 最近&#xff0c;很多产品朋友告诉我&#xff0c;很多原型图都开始用Figma制作了&#xff0c;并且很多组件都是内置的&am…

Django实现智能问答助手-数据库方式读取问题和答案

扩展 增加问答数据库&#xff0c;通过 Django Admin 添加问题和答案。实现更复杂的问答逻辑&#xff0c;比如使用自然语言处理&#xff08;NLP&#xff09;库。使用前端框架&#xff08;如 Bootstrap&#xff09;增强用户界面 1.注册模型到 Django Admin&#xff08;admin.py…

SQL注入--文件读写注入--理论

什么是文件读写注入&#xff1f; MySQL中有 读取文件的函数&#xff1a;load_file() 写入文件的函数&#xff1a;Into outfile&#xff08;能写入多行&#xff0c;按格式输出&#xff09;和 into dumpfile&#xff08;只能写入一行且没有输出格式&#xff09; 利用这些函数在S…

《最小生成树算法详解:Kruskal的优雅实现》

前置知识和本篇介绍 前置知识&#xff1a; 数据结构-优先级队列&#xff0c; 数据结构-并查集。 Kruskal算法不需要建图&#xff0c; 因此不会建图的模板也没事。 本篇介绍一最小生成树的概念和Kruskal算法。 有关prim算法&#xff08;另一种最小生成树的算法&#xff09;&am…

云计算-华为HCIA-学习笔记

笔者今年7月底考取了华为云计算方向的HCIE认证&#xff0c;回顾从IA到IE的学习和项目实战&#xff0c;想整合和分享自己的学习历程&#xff0c;欢迎志同道合的朋友们一起讨论&#xff01; 第二章&#xff1a;服务器基础 服务器是什么&#xff1f; 服务器本质上就是个性能超强的…

uniapp接入高德地图

下面代码兼容安卓APP和H5 高德地图官网&#xff1a;我的应用 | 高德控制台 &#xff0c;绑定服务选择《Web端(JS API)》 /utils/map.js 需要设置你自己的key和安全密钥 export function myAMap() {return new Promise(function(resolve, reject) {if (typeof window.onLoadM…

C++:探索AVL树旋转的奥秘

文章目录 前言 AVL树为什么要旋转&#xff1f;一、插入一个值的大概过程1. 插入一个值的大致过程2. 平衡因子更新原则3. 旋转处理的目的 二、左单旋1. 左单旋旋转方式总处理图2. 左单旋具体会遇到的情况3. 左单旋代码总结 三、右单旋1. 右单旋旋转方式总处理图2. 右单旋具体会遇…

文小言1:

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

uni-app 界面TabBar中间大图标设置的两种方法

一、前言 最近写基于uni-app 写app项目的时候&#xff0c;底部导航栏 中间有一个固定的大图标&#xff0c;并且没有激活状态。这里记录下实现方案。效果如下&#xff08;党组织这个图标&#xff09;&#xff1a; 方法一&#xff1a;midButton的使用 官方文档&#xff1a;ta…

CentOS7(Linux)详细安装教程(图文详解)

一、软件准备 本文CentOS7安装在VMware Workstation虚拟机软件,故安装前请自行安装该软件。VMware Workstation官网链接:VMware Workstation官网地址CentOS7下载地址:centos7镜像 如下是最常使用的版本(任选版本)centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里…