[ZT]Shell之Sed z

不改代码实现数据库凭据动态轮换与配置加密:脚本+TDE实战方案 在数据库安全领域,透明数据加密(TDE)是一种对应用透明的静态数据保护技术,它在数据写入存储时自动加密,读取时自动解密,无需修改应用程序。其核心原理是利用数据库引擎内置的加密功能,结合密钥管理服务(KMS),在存储层构建安全防线。这项技术的价值在于,它能以极低的侵入性满足数据安全合规要求,如等保测评和数据安全法。典型的应用场景包括保护敏感配置文件和实现凭据的动态管理。本文聚焦于一个具体实践:针对无法修改源码的老旧系统,通过外部脚本调用TDE等数据库加密函数,自动化完成数据库凭据的定期轮换,并对配置文件进行加 阅读详情

Table of Contents
1. Sed简介
2. 定址
3. Sed命令
4. 选项
5. 元字符集
6. 实例
7. 脚本

1. Sed简介

sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。


2. 定址

可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。


3. Sed命令

调用sed命令有两种形式:


sed [options] 'command' file(s)

sed [options] -f scriptfile file(s)


<
a/
在当前行后面加入一行文本。

b lable
分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。

c/
用新的文本改变本行的文本。

d
从模板块(Pattern space)位置删除行。

D
删除模板块的第一行。

i/
在当前行上面插入文本。

h
拷贝模板块的内容到内存中的缓冲区。

H
追加模板块的内容到内存中的缓冲区

g
获得内存缓冲区的内容,并替代当前模板块中的文本。

G
获得内存缓冲区的内容,并追加到当前模板块文本的后面。

l
列表不能打印字符的清单。

n
读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。

N
追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。

p
打印模板块的行。

P(大写)
打印模板块的第一行。

q
退出Sed。

r file
从file中读行。

t label
if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。

T label
错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。

w file
写并追加模板块到file末尾。

W file
写并追加模板块的第一行到file末尾。

!
表示后面的命令对所有没有被选定的行发生作用。

s/re/string
用string替换正则表达式re。

=
打印当前行号码。

#
把注释扩展到下一个换行符以前。

以下的是替换标记

g表示行内全面替换。

p表示打印行。

w表示把行写入一个文件。

x表示互换模板块中的文本和缓冲区中的文本。

y表示把一个字符翻译为另外的字符(但是不用于正则表达式)


4. 选项
<
-e command, --expression=command
允许多台编辑。

-h, --help
打印帮助,并显示bug列表的地址。

-n, --quiet, --silent
取消默认输出。

-f, --filer=script-file
引导sed脚本文件名。

-V, --version
打印版本和版权信息。


5. 元字符集
<
^
锚定行的开始 如:/^sed/匹配所有以sed开头的行。

$
锚定行的结束 如:/sed$/匹配所有以sed结尾的行。

.
匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d。

*
匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。

[]
匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。

[^]
匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。

/(../)
保存匹配的字符,如s//(love/)able//1rs,loveable被替换成lovers。

&
保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。

/<
锚定单词的开始,如://

/>
锚定单词的结束,如/love/>/匹配包含以love结尾的单词的行。

x/{m/}
重复字符x,m次,如:/0/{5/}/匹配包含5个o的行。

x/{m,/}
重复字符x,至少m次,如:/o/{5,/}/匹配至少有5个o的行。

x/{m,n/}
重复字符x,至少m次,不多于n次,如:/o/{5,10/}/匹配5--10个o的行。

6. 实例
删除:d命令
$ sed '2d' example-----删除example文件的第二行。

$ sed '2,$d' example-----删除example文件的第二行到末尾所有行。

$ sed '$d' example-----删除example文件的最后一行。

$ sed '/test/'d example-----删除example文件所有包含test的行。

替换:s命令
$ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。

$ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。

$ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加 localhost,变成192.168.0.1localhost。

$ sed -n 's//(love/)able//1rs/p' example-----love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。

$ sed 's#10#100#g' example-----不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。

选定行的范围:逗号
$ sed -n '/test/,/check/p' example-----所有在模板test和check所确定的范围内的行都被打印。

$ sed -n '5,/^test/p' example-----打印从第五行开始到第一个包含以test开始的行之间的所有行。

$ sed '/test/,/check/s/$/sed test/' example-----对于模板test和west之间的行,每行的末尾用字符串sed test替换。

多点编辑:e命令
$ sed -e '1,5d' -e 's/test/check/' example-----(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执 行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。

$ sed --expression='s/test/check/' --expression='/love/d' example-----一个比-e更好的命令是--expression。它能给sed表达式赋值。

从文件读入:r命令
$ sed '/test/r file' example-----file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。

写入文件:w命令
$ sed -n '/test/w file' example-----在example中所有包含test的行都被写入file里。


追加命令:a命令
$ sed '/^test/a//--->this is a example' example<-----'this is a example'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。

插入:i命令
$ sed '/test/i//

new line

-------------------------' example

如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面。

下一个:n命令
$ sed '/test/{ n; s/aa/bb/; }' example-----如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。

变形:y命令
$ sed '1,10y/abcde/ABCDE/' example-----把1--10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。

退出:q命令
$ sed '10q' example-----打印完第10行后,退出sed。

保持和获取:h命令和G命令
$ sed -e '/test/h' -e '$G example-----在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将 打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保 持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中 的行的末尾。在这个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到该文件的末尾。

保持和互换:h命令和x命令
$ sed -e '/test/h' -e '/check/x' example -----互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。

7. 脚本
Sed脚本是一个sed的命令清单,启动Sed时以-f选项引导脚本文件名。Sed对于脚本中输入的命令非常挑剔,在命令的末尾不能有任何空白或文本,如果在一行中有多个命令,要用分号分隔。以#开头的行为注释行,且不能跨行。


比如,如果要打印出含有字串”1024”的行,我就可能会用:
cat filename | sed –n ‘/1024/p’sed命令详解!!(要学习shell的 朋友要好好看看)


<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
Linux Shell 脚本编程实战 >>从语法到运维案例 Shell 本质:调用 Linux 系统命令,语法只负责控制命令执行逻辑。学习路线:变量 → 判断 → 循环 → 函数 → 数组 → sed/awk 三剑客。写脚本思路梳理业务需求,拆解执行步骤先命令行调试单条命令,确认输出符合预期封装变量、函数,完成脚本编写边界测试:参数为空、文件不存在、命令执行失败等场景企业实战要求:能够编写巡检、备份、部署、监控脚本,读懂线上数百行自动化脚本。 阅读详情

相关推荐

Shell 入门指南:从基础语法到实战脚本

Shell是用户与操作系统交互的命令行解释器,常见如Bash、Zsh。通过编写Shell脚本可实现自动化任务,如文件处理、日志清理等。脚本使用变量、条件判断、循环、函数及重定向功能,结合set -euo pipefail提升健壮性,配合shellcheck静态检查与注释优化,能高效编写可靠脚本。掌握基础语法后,从日常任务入手,逐步构建实用自动化工具。

biejiaxd的博客 86

shell中文件处理及字符串处理

1、echo输出有色及指定大小字符串 echo -e "\e[0;31;1m要输出的字符串\e[0m" echo 加上-e参数使得 \ 具有了C中的printf输出一样的转义功能 \e[0;31;1m为设置输出字符为红色31(无背景色),1m粗体 更多控制功能如下: 编码 颜色/动作 0 重新设置属性到缺省设置 1 设置粗体 2 设置一半亮度(模拟彩色显示器的颜色) 4 设置

80后的梦想 1580

【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04

编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017)

weixin_49199313的博客 408

[ZT]Linux非常好的一些技巧

zt:http://www.lupaworld.com/441/viewspace_1801.html删除 core 文件 # find ~ -name core -exec file {} ; -exec rm -i {} ; 查看使用文件的进程 # fuser -u /usr/my_application/foo 搜索字符串 #grep "hello w

Robert's Log 755

二叉树的操作之统计二叉树中节点的个数

一,问题描述 给定一颗二叉树,已知其根结点。 ①计算二叉树所有结点的个数 ②计算二叉树中叶子结点的个数 ③计算二叉树中满节点(度为2)的个数   二,算法分析 找出各个问题的基准条件,然后采用递归的方式实现。 ①计算二叉树所有结点的个数 1)当树为空时,结点个数为0,否则为根节点个数 加上 根的左子树中节点个数 再加上 根的右子树中节点的个数 借助遍历二叉树的思路,每访问一个结...

weixin_34200628的博客 4568

中国裁判文书网案例批量爬取

本文介绍了某法院网站数据采集的技术研究过程,主要包含JS逆向分析和数据解密方法。通过开发者工具分析发现页面数据经过加密处理,重点研究了ciphertext等加密参数的生成逻辑。文章详细记录了定位加密函数、扣取加密代码、解密数据处理的全流程,并验证了解密方法的有效性。研究过程中强调了技术使用的法律边界,明确声明仅用于合法技术研究,禁止任何非法数据爬取行为。最终实现了加密数据的成功解密,并解释了各请求参数的作用,为后续数据清洗和存储奠定了基础。

2303_80825459的博客 817

检查服务器端口是否存活,端口不存活微信告警

脚本添加到计划任务定时执行即可,已在原脚本上做了优化,多端口检查,只需要修改Port数组即可 需要iplist文件 如:TestServer_0001 10.10.0.50 Web_TestServer_0001 以下是脚本文件: #!/bin/bash #===================通过微信报警=================== TMP1=`mktemp...

weixin_30517001的博客 435

绕过ROS2!在RDK X5上直接用Python调用海康相机C++ SDK的避坑指南

本文详细介绍了在RDK X5上绕过ROS2,直接使用Python调用海康相机C++ SDK的轻量化方案。通过Cython构建Python绑定,提取海康相机SDK核心组件,实现高效图像采集。文章涵盖环境准备、Cython接口设计、编译系统配置及性能优化技巧,特别适合ARM64平台开发者。

weixin_33712987的博客 250

Linux 进程控制:fork、exit、wait、exec 与手写一个 mini shell

讲清进程控制的四个动作:fork 创建(内核四件事与写时拷贝)、exit/_exit/return 终止与 8 位退出码、wait/waitpid 等待与 status 位图、exec 七接口与唯一系统调用 execve,最后用这些零件拼出一个支持 cd/export/echo 的 mini shell,并解释环境变量两张表与 putenv 浅拷贝坑。附速查表与 14 道自测题。

BIII__的博客 189

3D打印机之Marlin固件配置

一、Marlin固件必要配置 打开Configuration.h文件,使用VS code的搜索功能来修改下面的参数。 配置波特率 #define BAUDRATE 250000 配置串口波特率,一般不修改。上位机的波特率要和这个一致才能正常通讯。 2. 配置主板类型 第 134 行 #define MOTHERBOARD BOARD_MKS_GEN_L 找到 boards.h 这个文件打开,就可以看到支持的主板类型。3d打印机主控板类型非常多,每个板子硬件连接都可能不同,所以这个参数必须要跟你自己的板子

acktomas的博客 2万+

深度学习笔记——Transformer

本文详细介绍面试过程中可能遇到的Transformer知识点。

haopinglianlian的博客 1706

第一章 Shell 概述

本文介绍了Shell编程的基础知识,包括Shell的起源与发展、常见Shell类型及查看方式,阐述了Shell作为命令解释器连接用户与操作系统内核的作用。强调其作为解释型脚本语言的优势,适用于系统管理自动化任务。内容涵盖Shell脚本基本结构、注释规范、编写风格、执行方法及常用命令(如echo、printf、history、管道等),并讲解了命令执行顺序、退出状态码等核心概念,为初学者提供系统学习路径。

sbjdhjd的博客 307

PDF格式分析(一)简介

概述 PDF文件是一种编程形式的文档格式,它所有显示的内容,都是通过相应的操作符进行绘制的。 PDF基本显示单元包括:文字,图片,矢量图,图片 PDF扩展单元包括:水印,电子署名,注释,表单,多媒体,3D PDF动作单元:书签,超链接(初学者可以简单这么理解,对于研究比较深入的人员来说,拥有动作的单元有很多个,包括电子署名,多媒体,3D等等) 优势 一致性: 在所有可以打开PDF的机...

steve_cui的博客 2万+

DeepAgents框架构建一个带有严格安全护栏的本地 Shell 执行环境。

核心亮点在于:通过精心设计的 System Prompt(系统提示词)强制约束大模型的行为,防止其通过操作系统底层的 Shell 命令绕过框架的虚拟沙箱,从而确保本地物理磁盘的绝对安全。DeepAgents 框架接入 DeepSeek 模型并构建一个带有严格安全护栏的本地 Shell 执行环境。

qq_42092076的博客 73

Python 爬虫实战:抓取悦动圈跑步爱好者运动轨迹数据,规划健身路线

通过本次 Python 爬虫实战,我们学习了如何使用 Python 抓取悦动圈跑步爱好者的运动轨迹数据,并基于这些数据进行分析和处理,最终规划出健身路线。在这个过程中,我们掌握了requests、BeautifulSoup、pandas和matplotlib等库的基本使用方法,了解了爬虫的基本原理和流程。希望本文能够帮助你更好地理解和应用 Python 爬虫技术,在数据处理和分析领域取得更多的成果。

u014481728的博客 2367

这种绑定设备的文件拷贝出来了,怎么放到一台新的P100上使用

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1136

miniconda3设置为shell终端默认激活环境

将以下内容添加至 ~/.bashrc,路径需根据实际修改(如 /home/jason/miniconda3): # >>>conda initialize >>> __conda_setup="$('/home/jason/miniconda3/bin/conda' 'shell.bash' 'hook' 2>/dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/home/jason/miniconda3/etc/pro

huangjiazhi_的博客 208

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

抖音_libsscronet_证书校验绕过

代理(Reqable)进行中间人后换发的证书,系统信任库是认的,但还要过这层自定义校验:最终落到 Java 的。,纯 Python 标准库,不需要 IDA / Ghidra / capstone。是安装时随机生成的,每台设备、每次重装都不同,换设备或重装后需重新查一次并替换。so 已被映射进运行中的进程,覆盖磁盘不会影响内存里的旧映像,不杀进程等于没改。,抖音所有网络请求的底层,自带 BoringSSL(同目录。关掉开关后,回调根本不执行,下面的 JNI、,Python 3.6+,仅用标准库。

qq_44990881的博客 186

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

论开发与应用的差异--以office利用与MySQL安装设置为例

本文对比了传统Excel数据绑定Word生成通知的模板化操作与现代前后端开发中数据库驱动页面渲染的差异。早期依赖Excel(容量有限)实现批量生成,现发展为用数据库替代Excel,通过前端绑定数据实现动态页面渲染,形成前后端分离模式。以淘宝初期招聘为例,强调页面开发能力的重要性。同时指出,掌握MySQL、Workbench、Shell等数据库相关工具及概念,是专业开发能力的关键,需熟练运用报告中涉及的所有技术术语,以弥补与Office操作的差距。

mewowaBc的博客 149

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Claude Code 写 Shell 脚本翻车实录:一份踩坑与避坑指南

回顾核心结论:AI 能显著提升写脚本的效率,但安全边界必须由人来守。上线前必查的 10 条 Shell 脚本清单推荐工具:shellcheck、shfmt、bats、容器化试跑一句话总结:让 AI 写,让人来审,让环境来验证。

xiaolu12388的博客 309

Android 系统启动与调试中的日志抓取方式全解析

│ 用户操作/系统事件 ││ │▼ ▼│ (驱动/硬件/内存管理) │ │ (App/SystemServer) ││ │ │ ││ │▼ ▼│ dmesg 命令 │ │ logd daemon ││ cat /proc/kmsg │ │ (分类存储到分区) ││ │▼ ▼│ 串口 UART │ │ logcat 命令 ││ (硬件直连,最早输出) │ │ adb logcat ││ │▼│ (汇总所有日志+系统状态) │工具最佳用途关键优势主要局限dmesg。

zhaoshuzhaoshu的专栏 271

VBScript023-运行指定程序

方法则负责以独立进程方式启动指定程序。实际使用时应谨慎操作注册表,避免误改系统配置。下面这段 VBScript 代码演示如何通过。用于实例化 Shell 对象,

jiangs111的博客 169

Linux系统上root口令重置标准操作流程

若返回Permissive,说明该参数被持久化进GRUB配置,‘grep -n "enforcing" /etc/default/grub’核实并删除后,‘grub2-mkconfig -o /boot/grub2/grub.cfg’重新生成(UEFI路径/boot/efi/EFI/kylin/grub.cfg);如疑似恶意篡改,需要保留系统日志。重启命令必须用全路径/usr/sbin/reboot -f,单用户PATH不含/usr/sbin,裸reboot报“command not found”。

qq_39496637的博客 244

shell脚本执行方式

Shell 解释器就是一个程序,负责把你写的 shell 代码 / 终端输入,翻译成内核能听懂的指令,调度操作系统干活。

fengliyang_的博客 214

进程程序替换_复制品怎么换个新程序_第七篇

fork 创造进程,exec 替换程序内容而不改变 PID。exec 仅替换用户空间代码与数据,保留进程身份、文件描述符等属性。其核心由内核完成,因涉及磁盘读取、页表重建、指令指针跳转等权限受限操作。六个 exec 函数差异仅在参数传递(l/v)、路径查找(p)和环境变量(e)控制。成功执行后无返回值,因原程序已消失;失败则返回 -1,继续运行原程序。本质是“换魂不换身”。

lemo_n_的博客 216

AI写Shell脚本翻车实录

用 AI(Claude Code / Codex 这类工具)写 Shell 脚本,爽是真的爽,翻车也是真的翻。这篇记录 3 个我踩过的坑,帮你少走弯路。

jiageai的博客 162
上一篇: Grep学习笔记 z
下一篇: 一张图分出你是用左脑还是右脑 z
KataDoc360
博客等级 码龄18年 65粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值