Shell功能
脚本获取域名的IP地址
自动检测公网IP地址并更新到公云PubYun
获取公网IP地址的多种方式
深入理解 Bash 中的管道与子 Shell:防止常见陷阱
CentOS和Ubuntu的Shell兼容点
主机之间ping命令检测
脚本匹配ip地址正则表达式
CentOS 7.x系统三级等保规范脚本
Shell数值计算的几种方法
脚本单实例运行的进程锁
主机通过客户端实时上传本地文件到对象存储
执行命令前关闭history记录
Bash中的变量声明与处理
sed:使用正则匹配IP地址
sed: 匹配并在中间位置插入字符
Find排除多个目录并按多个后缀查找文件
Linux主机巡检脚本
增加CPU使用率到指定范围
本文档使用 MrDoc 发布
-
+
home page
sed: 匹配并在中间位置插入字符
# 问题示例 有如下2个字符串,实现如下需求: ``` proxy_pass http://192.168.1.1:8080/upload; proxy_pass http://upload_server/getupload.action; ``` 要求说明: 1. `http://`后到`/`之前可能为任何值 2. 保留路径`/`后的所有内容 3. 在路径`/`之前插入固定字符串`/prefix/admin` # 结果演示 ```sh [root@localhost ~]# prefixAddr=/prefix/admin [root@localhost ~]# [root@localhost ~]# echo $prefixAddr /prefix/admin [root@localhost ~]# echo 'proxy_pass http://192.168.1.1:8080/live_upload;' > sedtest.txt [root@localhost ~]# echo 'proxy_pass http://upload_server/getupload.action;' >> sedtest.txt [root@localhost ~]# [root@localhost ~]# cat sedtest.txt proxy_pass http://192.168.1.1:8080/live_upload; proxy_pass http://upload_server/getupload.action; [root@localhost ~]# [root@localhost ~]# sed "s@\(proxy_pass\s*http:\/\/.*\)\(\/[^;]\+\)@\1$prefixAddr\2@" sedtest.txt proxy_pass http://192.168.1.1:8080/prefix/admin/live_upload; proxy_pass http://upload_server/prefix/admin/getupload.action; [root@localhost ~]# ``` ![](/media/202310/2023-10-10_115819_2307070.5931247264313876.png) # 命令解释 ![](/media/202310/2023-10-10_121452_6812910.7751922532539856.png) - `\(` 和 `\)` 用于创建捕获组,以便在替换中引用它们。 - `proxy_pass http:\/\/.*` 匹配 proxy_pass 后到路径`/`之前的任何字符串。 - `\(\/[^;]\+\)` 匹配 路径 `/` 后的上下文,直到分号结束。 在替换中,使用 `\1` 和 `\2` 来引用捕获组中匹配的内容,并在路径`/`前插入了`/prefix/admin`。
Nathan
Oct. 10, 2023, 12:14 p.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
PDF文件
Docx文件
share
link
type
password
Update password