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

sed 流式编辑器

使用方式:

1,前置指令 | sed 选项  定址符指令

2,sed 选项  定址符指令   被处理文档

选项:

-n 屏蔽默认输出

 -i写入文件 

 -r支持扩展正则

指令:

p输出 

 d删除 

 s替换

    sed -n '1p' user        //输出第1行

   sed -n '2p' user    //输出第2行

   sed -n '3p' user    //输出第3行

   sed -n '2,4p' user   //输出第2~4行

   sed -n '2,+1p' user  //输出第2行以及后面1行

   sed -n '2p;4p' user  //输出第2行,第4行

sed -n '/^root/p' user  //在sed中使用正则表达式输出以root开

头的行

   grep "^root" user  //效果同上

 egrep"^root|^bin" user  //找root或者bin开头的行 

 sed -nr '/^root|^bin/p' user  //在sed中查找,-r使用扩展正

则,效果同上

   sed -n '=' user    //查看所有行号

 sed -n '$=' user   //查看最后一行的行号,相当于查看文档

总共有几行

   

  sed  '1d' user   //删第1行

  sed  'd' user   //删所有

  sed  '3d' user  //删第3行

  sed  '2,5d' user   //删2~5行

  sed  '4,+2d' user  //删4行以及后面2行

  sed  '1d;3d' user   //删第1行,第3行

sed  '$d' user   //删除最后一行

  sed -n '$p' user  //查看最后一行

sed -n '1!p' user   //查看除了第1行以外的行, !代表取反

sed中的替换,使用 s/old/new/

vim test.txt    //准备素材,写入下列内容

2017 2011 2018

2017 2017 2024

2017 2017 2017

sed 's/2017/8888/' test.txt  //替换所有行的第1个2017为8888

sed '1s/2017/8888/' test.txt  //替换第1行的第1个2017

sed '2s/2017/8888/' test.txt  //替换第2行

sed '1,2s/2017/8888/' test.txt  //替换1~2行

sed 's/2017/8888/2' test.txt   //替换所有行的第22017

sed 's/2017/8888/3' test.txt   //替换所有行的第3个2017

sed '/2011/s/2017/8888/' test.txt  //替换有2011的行的第12017

sed 's/2017/8888/g' test.txt   //替换所有行的所有个

sed -n 's/root/6666/p'  /etc/passwd  //替换每行第1个root,并只显示被替换的行

sed -n 's/root/6666/2p'  /etc/passwd  //替换每行第2个root,并只显示被替换的行

sed -n 's/root/6666/gp'  /etc/passwd  //替换每行的所有root

sed '3s/2017/8888/;3s/2017/8888/' test.txt  //替换第3行的第1个和第2个2017

------------------------------------------------------------

尝试将user文档中的/bin/bash替换成/sbin/sh

sed 's//bin/bash//sbin/sh/' user    //常规手段替换,内容会与替换冲突,替换失败

sed 's/\/bin\/bash/\/sbin\/sh/' user  //使用\转义符号,可以成功,但不方便

sed 's!/bin/bash!/sbin/sh!' user   //更改替换的间隔符号是最理想方法

sed 's(/bin/bash(/sbin/sh(' user   //效果同上

Seds替换的高级应用

1)删除文件中每行的第二个、最后一个字符

sed 's/.//2;s/.$//' test    分两个步骤完成,中间用分号

隔开,第一步将每行的第二个任意字符替换成空,第二

步将每行的最后一个任意字符替换成空即可

2)删除文件中所有的数字

sed -i 's/[0-9]//g' test    先找到任意数字,然后都替换成空

3)将文件中每行的第一个、倒数第1个字符互换

echo abc > abc            //创建素材

sed -r 's/(a)(b)(c)/\3\2\1/' abc  //替换abc时复制每一个字符,后面替换的内容用\数字粘贴,可以任意调换位置

echo xyz >> abc   //追加内容

sed -r 's/(a)(b)(c)/\3\2\1/' abc  //再用之前的方法无法替换第2行

sed -r 's/(.)(.)(.)/\3\2\1/' abc  //将具体字符用 . 替代即可将文档中的xyz修改成xyaz时,上述方案失灵

sed -r 's/^(.)(.*)(.)$/\3\2\1/' abc   //再次升级,分别找到第1个字符和最后1个字符,中间可以是任意

sed -r 's/^(.)(.*)(.)$/\3\2\1/' test   //达成需求

4)为文件中每个大写字母添加括号

sed -r 's/([A-Z])/(\1)/g' test  //先找到任意大写字母,然后保留,最后替换成带括号的状态

练习:

编写脚本,安装httpd服务,使用82号端口

#!/bin/bash

yum -y install httpd

sed -i '/^Listen 80/s/80/82/' /etc/httpd/conf/httpd.conf   //找到有Listen 80开头的行,替换80为82

systemctl restart httpd

运行脚本之后,使用curl 192.168.4.7:82测试或者火狐浏览器192.168.4.7:82

要关闭selinux与防火墙

setenforce 0    //如果脚本执行之前没关闭selinux,会报错

systemctl stop firewalld

--------------------------------------------------------------------

sed中除了常用的p d s 三个指令,还有a行下追加  i行上添加  c替换整行

sed 'a 666' user  //在所有行下追加666

sed '1a 666' user  //第1行下追加666

sed 'i 666' user   //所有行上添加666

sed '3i 666' user  //第3行上添加666

sed '2a 666' user   //第2行下追加666

sed 'c 666' user   //所有行替换成666

sed '/root/c 666' user  //找到有root的行替换成666

编写脚本,找到系统使用bash的账户名,然后按照“用户名 --> 密码” 的格式存储在一个文件中

"\s"可以匹配tab键和空格所敲出来的空格。

"\w"匹配数字、字母、下划线

sed的其它指令:

”a“行下追加,逐行处理,如果只处理第一行就用”1a“

”i“行上添加

”c“替换整行

相关文章:

sed 流式编辑器

使用方式: 1,前置指令 | sed 选项 定址符指令 2,sed 选项 定址符指令 被处理文档 选项: -n 屏蔽默认输出 -i写入文件 -r支持扩展正则 指令: p输出 d删除 s替换 sed -n 1p user //输出第1行 sed -n…...

Linux shell编程学习笔记33:type 命令

目录 0 引言1 type 命令的功能和格式 1.1 type命令的功能1.2 type 命令的格式2 type命令用法实例 2.1用type命令查看shell内置命令(以echo命令为例)2.2 用type命令查看别名(以ls命令为例)2.3 用type命令同时查看shell内置命令和别…...

【数据结构】—红黑树(C++实现)

🎬慕斯主页:修仙—别有洞天 💜本文前置知识: AVL树 ♈️今日夜电波:Letter Song—ヲタみん 1:36━━━━━━️💟──────── 5:35 …...

内衣洗衣机和手洗哪个干净?高性价比内衣洗衣机推荐

通常来说,我们的内衣裤对卫生要求比较高,毕竟是贴身穿的,所以如果和一般的衣物一起洗,就怕会有细菌互相感染。所以很多用户为了内衣裤的卫生都会选择自己手动洗,但手洗一方面很费时间和人力,另一方面又很伤…...

TikTok与互动广告:品牌如何打破传统界限

随着数字时代的蓬勃发展,广告行业也经历了翻天覆地的变革。在这个变革的浪潮中,TikTok作为一款崭新的社交媒体平台,通过其独特的短视频形式为品牌提供了全新的互动广告机会。 本文将深入探讨TikTok与互动广告的结合,以及品牌如何…...

跟着Nature Communications学习Hisat-Trinity-PASA等分析流程

一边学习,一边总结,一边分享! 详细教程请访问: 组学分析流程 本期分析流程 Hisat2-SamtoolsTrinity_GG_denovoPASA… 本期教程文章 题目:Genomic insights into local adaptation and future climate-induced vulnerability of a keystone forest tree in East Asia H…...

Unity中Batching优化的动态合批

文章目录 前言一、动态合批的规则1、材质相同是合批的前提,但是如果是材质实例的话,则一样无法合批。2、支持不同网格的合批3、动态合批需要网格支持的顶点条件二、我们导入一个模型并且制作一个Shader,来测试动态合批1、我们选择模型的 Mesh…...

2022年第十一届数学建模国际赛小美赛B题序列的遗传过程解题全过程文档及程序

2022年第十一届数学建模国际赛小美赛 B题 序列的遗传过程 原题再现: 序列同源性是指DNA、RNA或蛋白质序列之间的生物同源性,根据生命进化史中的共同祖先定义[1]。DNA、RNA或蛋白质之间的同源性通常根据它们的核苷酸或氨基酸序列相似性来推断。显著的相…...

【Linux】静态库与动态库制作及运行原理

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法…感兴趣就关注我吧!你定不会失望。 本篇导航 0. 静态库与动态库1. 制作与使用静态库2. 制作与使用动态库3. 动态库是如何被加载到内存?3.1程序地址空间 0. 静态库…...

工具站推荐

自己搭了一个文本工具站 TextTool,包含了常用的文本功能。 我自己比较常用 行转列、列转行、下划线替换的功能。 欢迎各位大佬提意见和建议...

【JS】toFixed()无法精准保留小数的解决方案

情景复现: 发现用 toFiexd() 四舍五入保留小数有时不是很精确,接下来用 a 8.0345,b8.045,举例如下: var a 8.035; console.log(a.toFixed(2)) // 8.04 var b 8.045; console.log(b.toFixed(2)) // 8.04 不难看出…...

vue3版本学习

1,响应式ref或者reactive const aa ref(hello) const bb reactive({ aa: hello, ss: workd }) 2,计算属性 响应式属性经过计算得到的值(ref),放到模板中,只会随着响应式author.books属性变化而变化 const autor …...

【WPF.NET开发】创建简单WPF应用

本文内容 先决条件什么是 WPF?配置 IDE创建项目设计用户界面 (UI)调试并测试应用程序 通过本文你将熟悉在使用 Visual Studio 开发应用程序时可使用的许多工具、对话框和设计器。 你将创建“Hello, World”应用程序、设计 UI、添加代码并调试错误。在此期间&#…...

视频智能分析国标GB28181云平台EasyCVR加密机授权异常是什么原因?

国标GB28181视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等。 近期有用户选择使用加密机进行EasyCVR授…...

Mysql安全之基础合规配置

一、背景 某次某平台进行安全性符合型评估时,列出了数据库相关安全选项,本文特对此记录,以供备忘参考。 二、安全配置 2.1、数据库系统登录时的用户进行身份标识和鉴别; 1)对登录Mysql系统用户的密码复杂度是否有要…...

前后端分离项目跨域请求

一、前端vue项目 在项目中创建request.js文件,添加以下内容 import axios from "axios"; const api axios.create({ //这里配置的是后端服务提供的接口baseURL: "http://localhost:8080/web-demo",timeout: 1000} ); export default api; …...

OpenEuler系统桌面终端设置字体

初始界面 终端的字体间距过大,阅读起来不方便。 调整终端字体 点击菜单,选择“配置文件首选项” 未命名 ---- 文本---- 勾选 自定义字体 ---- 选择 "DejaVu LGC Sans Mono"字体 你也可以根据自己的喜好,选择其他字体。 修改好了…...

repo常用命令解析(持续更新)

1 同步 1.1 将本地仓库更新到最新状态。它会从远程服务器下载最新的代码,并将本地仓库与之同步。如果本地仓库中已经存在某个项目,repo sync会自动检测本地仓库中该项目的版本,并将其更新到最新状态。 类似于git fetch和git merge命令组合使…...

关于小红书商单变现的一些答疑

AI小红书商单训练营也过去1个月了,今天给大家汇总几个常遇到的问题,希望对大家在运营过程中有所帮助。 1.账号封面是否要统一模版? 为了让账号主页呈现整洁美观的效果,建议统一封面设计,视频开头可以设置一个固定画面…...

使用 Kubernetes Agent Server 实现 GitOps

目录 温习 GitOps 极狐GitLab Kubernetes Agent 极狐GitLab GitOps workflow 极狐GitLab KAS 的配置 创建极狐GitLab agent 创建 agent token Kubernetes 上安装 agent(agentk) 极狐GitLab GitOps workflow 实践 写在最后 温习 GitOps GitOps …...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

python/java环境配置

环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

AI,如何重构理解、匹配与决策?

AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...