【Web】sed 流编辑器在前端部署中的作用

Linux运维入门实战:从零搭建服务器环境到部署Web服务 在实际运维工作中,Linux 系统是绝大多数服务器、云主机和容器环境的基石。无论是部署应用、排查故障、管理资源还是保障安全,扎实的 Linux 基础都是运维工程师的立身之本。然而,很多初学者面对海量的命令、复杂的配置和抽象的概念时,常常感到无从下手,学习过程容易陷入“一看就会,一用就废”的困境。 本文旨在为希望从零开始系统学习 Linux 运维的读者,提供一条清晰、可执行的学习路径。我们将不局限于单个命令的讲解,而是从理解 Linux 的设计哲学出发,通过构建一个模拟的服务器环境,串联起用户管理、文件系统、 阅读详情

什么是 sed 流编辑器?为什么叫“流”编辑器?

sed(stream editor) 是 Linux/Unix 中的经典文本处理工具,中文叫 流编辑器。

  • stream(流) 代表数据不是先加载进编辑器,而是像水一样“流过 sed”,sed 边读边处理。
  • 它不需要你打开文件,只需要写一条命令,它就能在“流过”的文本上做一次编辑,再输出结果。
  • 常用来 查找、替换、删除、插入、格式化 文本。

因为它是命令行工具,你可以在脚本(Shell、CI/CD、中间件)里自动执行,没有任何交互成本,非常适合自动化部署。


sed 的典型使用方式

下面是你最常见、最需要掌握的。

1. 替换文本(最常见)

sed -i 's/old/new/g' file.txt
  • -i 代表直接修改文件
  • s = substitute(替换)
  • g = 全局替换

例如:把 .env.production 中的 API 地址替换成你的线上地址

sed -i 's|VITE_API=.*|VITE_API=https://api.xxx.com|' .env.production

2. 删除某一行

sed -i '3d' file.txt   # 删除第 3 行

3. 删除包含某关键词的行

sed -i '/DEBUG/d' file.txt

4. 插入行

sed -i '1i # 这是新插入的第一行' file.txt

sed 为什么能用于部署脚本?

因为部署脚本需要频繁做这些事:

✔ 动态注入环境变量

✔ 替换构建产物中的 API 地址

✔ CI/CD 中自动化修改配置

✔ Nginx 配置或 Dockerfile 中动态替换内容

✔ 替换版本号、构建时间、hash

你不可能手动打开文件修改,只能使用命令自动改,sed 正好是处理纯文本最强的工具之一。

你的构建产物、配置文件、shell 脚本、env 文件本质上都是文本文件,所以 sed 可以编辑它们。


在项目部署流程中,sed 通常运行在哪个环节?

下面以前端项目部署为例:


🟦 一般前端项目的部署流程

以下适用于 Vite、Webpack、Nuxt、Next 静态化产物等:

  1. 拉取代码(Git)
  2. 安装依赖(npm/pnpm/yarn)
  3. 编译构建(npm run build)
  4. 构建产物生成(dist/)
  5. 部署服务器 / Nginx
  6. 覆盖环境变量、配置文件(这里 sed 上场) ← 很关键!

📌 sed 通常在 “构建之后 / 部署之前” 执行

为什么?

因为你的 API 地址、CDN 地址、版本号等很多数据是:

  • 构建阶段还不知道
  • 但部署阶段已经明确

比如:

  • 前端 build 时 API 地址是占位符:__API_URL__
  • 部署到线上后要替换成生产地址:https://prod.api.com

你不会为了换环境变量重新 build,这是浪费时间。

所以 sed 在“部署阶段”对产物进行二次替换,正好解决这个问题。


具体例子:前端部署中 sed 的作用

假设你的 index.html 中有一个变量:

<script>
window.API_BASE = "__API__";
</script>

你的部署脚本(如 build.sh)用 sed 自动替换:

sed -i 's|__API__|https://api.prod.com|g' dist/index.html

这时 sed 的作用就是:

✔ 把构建产物里的占位符替换成实际线上配置

✔ 保证同一套构建可以适配多个环境

✔ 避免每次变环境都重新构建


前端部署中 sed 的常见用途总结(非常实用)

1. 注入不同环境变量

sed -i "s|VITE_API=.*|VITE_API=$API_URL|" .env.production

2. CI 自动替换版本号

sed -i "s|__VERSION__|$CI_COMMIT_SHA|g" dist/index.html

3. 替换 Nginx 配置里的变量

sed -i "s|server_name .*;|server_name mysite.com;|" /etc/nginx/conf.d/default.conf

4. 在 Docker 镜像构建后动态注入配置

sed -i "s|__CDN__|$CDN_URL|g" /usr/share/nginx/html/assets/*.js

5. 生成动态脚本,比如 runtime-config.js

sed -i "s|__ENV__|$ENV|" dist/runtime-config.js

为什么前端部署特别需要 sed?

原因核心只有一个:

前端构建后的产物是纯静态文件,它不能在运行时读取 .env,只能通过文本替换注入配置。

后端有 Node/Python/Java,可以运行时读环境变量
前端没有!

所以前端只能:

◾ 要么构建时写死配置

◾ 要么部署时 sed 替换配置(最佳实践)

因此 sed 在前端部署中非常重要。


总结:用一句简单的话概括 sed 在部署中的作用

sed 是自动化部署中进行“文本替换和配置注入”的最强工具,用来在构建产物发布前动态修改配置,让你的前端项目能适配多个环境而无需重复构建。

Linux运维入门实战:从零搭建环境到部署Nginx Web服务 很多同学想学习 Linux,但面对命令行、系统架构、网络配置等概念时,常常感到无从下手,网上资料又过于零散。本文将从零开始,手把手带你搭建 Linux 环境、掌握核心命令、部署常用服务,并最终完成一个完整的 Web 服务部署实战项目。无论你是计算机专业学生、希望转行运维的开发人员,还是想提升服务器管理能力的从业者,都能通过这篇系统教程,构建起 Linux 运维的完整知识体系,达到可独立完成基础运维工作的水平。 1. Linux 运维:核心概念与职业前景 在深入学习具体操作之前,我们有必要理解 Linux 运 阅读详情

相关推荐

Linux学习路线图:从零基础到实战部署的完整指南

很多开发者刚接触 Linux 时,面对黑乎乎的终端和复杂的命令,常常感到无从下手。网上的资料要么过于零散,要么直接跳到高级运维,缺乏一条从零到就业的清晰路径。本文旨在解决这个问题,为你梳理一套完整的 Linux 学习路线图。无论你是计算机专业的学生、希望转型运维的开发人员,还是想提升服务器管理能力的后端工程师,都能从这篇文章中找到系统性的指导。我们将从最核心的 Linux 哲学和基础命令讲起,逐步深入到文件系统、权限管理、网络配置、Shell 编程等核心技术,最后还会涵盖虚拟机安装、服务部署等实战内容,并为

weixin_34194359的博客 391

用AI快速开发sed应用

降低学习成本:不需要完全掌握sed的所有复杂语法就能快速实现功能提高准确性:AI生成的命令考虑了各种边界情况,比手动写的更可靠迭代优化快:遇到问题时可以即时与AI对话调整,不需要反复搜索文档对于更复杂的文本处理需求,比如需要同时执行多个替换规则,或者处理特定格式的文件(如CSV、JSON),AI同样能提供很大帮助。只需要清楚地描述需求,它就能给出相应的sed命令组合或处理方案。

BlackironLynx23的博客 499

【Linux】web开发者要学习linux的什么内容

作为Web开发者,学习Linux可以帮助你更好地管理和部署你的Web应用程序,尤其是在服务器环境中。

欢迎指错||纠正||建议||水评+点赞&&评论&&关注&&转发 478

详解Node-RED中的三个文件(js,html,json)

Node-RED是一种基于流的编程工具,其基于流的程序设计是由J. Paul Morrison在20世纪70年代发明的,它将应用程序的行为描述为网络黑匣子(Node-RED中称为“节点”)。其中每个节点都有一个定义明确的目的;它被赋予一些数据,完成对数据的处理之后传递数据。网络负责节点之间的数据流。 它是一种非常适合于可视化表示的模型,并使其更容易为更广泛的用户所访问。如果有人可以将一个问题分解成离散的步骤,他们可以查看一个流并了解它正在做什么,而不必理解每个节点中的代码行。

qq_39437900的博客 3557

告别jq!用纯Shell实现JSON解析的3种骚操作(含性能对比)

本文针对在无jq工具的受限环境中解析JSON的需求,详细介绍了三种纯Shell实现方案:sed流式清洗、awk精准提取以及混合编程模式。文章通过实战示例解析了各方法的原理、优缺点及适用场景,并提供了关键的性能对比数据与选型指南,帮助系统管理员在零依赖条件下高效处理JSON数据。

weixin_29213525的博客 145

Linux云计算运维7天实战:从零基础到部署完整应用栈

Linux操作系统作为现代IT基础设施的基石,其稳定、高效和开源的特性使其成为服务器、云计算和容器化技术的核心载体。理解Linux的工作原理,如进程管理、文件系统和网络配置,是掌握自动化运维、保障服务高可用的基础。在云计算和DevOps的驱动下,Linux运维技能的价值日益凸显,它直接关系到应用部署的效率、系统的稳定性和成本控制。无论是部署Web服务、管理数据库,还是构建微服务架构,扎实的Linux能力都是关键。本文聚焦于通过一套结构化的实战资源,帮助学习者快速构建Linux及云计算运维的核心技能体系,特别

weixin_34290631的博客 370

将jar包打成docker镜像并部署在Linux上

将jar包打包成docker并部署在Linux上

聂可以的博客 1万+

Linux入门实战:从零掌握核心命令与部署技能

你是不是也遇到过这样的场景:在Windows上开发得好好的,一到服务器部署就各种水土不服?或者看到招聘要求上写着“熟悉Linux优先”,心里就有点发虚?又或者,你尝试过跟着网上零散的教程学习Linux,但总是学完就忘,遇到实际问题还是无从下手? 如果你有这些困惑,那么这篇文章就是为你准备的。我见过太多开发者把Linux学习想得过于复杂——要么觉得必须从内核源码开始啃,要么以为背几百条命令就能搞定。实际上,真正高效的Linux学习路径,是 先建立清晰的认知框架,再通过关键场景的实战来巩固 。这篇文章不会让你一

weixin_34320159的博客 611

CTF Web出题感悟

CTF Web出题感悟 最近帮忙学校ctf新生赛出题,负责出了web的8道题,8道题都很水,但是在出题时学习到了很多Docker镜像方面的知识。 首先我们来看看一道题是怎么组成的。 比如这道F12看源码的题目。 在实际过程中,个人感觉docker-compose.yml可有可无,所以我们主要来介绍以下Dockerfile flag.sh 和 index.php 很显然,index.php就是做题时的主界面。 <p style="font-family:arial;color:bl

wuuconix's blog 7011

Qt Creator构建Web应用程序

Qt Creator构建Web应用程序构建Web应用程序要求搭建开发环境为WebAssembly设置Qt启用WebAssembly插件指定WebAssembly设置添加WebAssembly套件在Web浏览器中运行应用程序 构建Web应用程序 WebAssembly是一种二进制格式,允许在网页中使用沙盒式可执行代码。这种格式几乎与本机代码一样快,并且现在所有主要的Web浏览器都支持这种格式。 Qt for WebAssembly支持构建Qt应用程序,以便可以将它们集成到网页中。它不需要任何客户端安装,并减少

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1680

Shell与Python3大爆炸002

这个完整指南将提供数百个实际案例、最佳实践和可重用的代码模板,帮助运维工程师、SRE和DevOps专家掌握现代基础设施管理的全套技能。由于篇幅限制,这里只展示了部分内容。

老韩的Linux云计算架构师进阶之路 144

循序渐进学运维-shell脚本实战专栏(1),完美讲解内存缓存LruCache实现原理

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。最近我才对这些路线做了一下新的更新,知识体系更全面了。

imtokenmax众筹 952

我的二进制漏洞挖掘学习路线

漏洞挖掘也分好多方向:浏览器漏挖,虚拟化,iot,车联网,应用安全等。而且也要区分一下平台,Linux,Android,Windows,还有一些其他的系统。在基础知识拿捏以后,Windows下如OD,windbg,x64dbg。IDA,GDB要会并联调。然后需要了解一下漏洞的知识,漏洞利用的知识。可以从复现漏洞,CTF来学习,学习完之后就可以通过审计源码或者反汇编二进制程序来挖掘。然后就是练就行了,多关注一下最新安全消息,安全漏洞。

qq_36918532的博客 4944

Linux系统学习路径:从零基础到实战部署的7天通关指南

如果你是一名开发者,或者正在学习计算机相关专业,那么“Linux”这个词对你来说一定不陌生。它可能是你简历上必备的技能,也可能是你工作中绕不开的环境,但更多时候,它是一道横亘在面前的“坎”:面对黑底白字的终端窗口,不知道从何下手;想部署一个服务,却被复杂的命令和权限问题劝退;甚至,连最基本的系统安装都感觉无从入手。 网络上充斥着海量的“Linux教程”,从零散的博客到动辄几十小时的视频课程。但很多初学者发现,学完之后依然无法形成体系:命令背了又忘,遇到实际问题还是不会排查,更别提将Linux技能转化为实际的

weixin_33845881的博客 291

智能车数字图像处理算法入门及C语言实现

智能车图像的最最基本入门算法介绍及C语言实现,二值化 - 特征识别 - 补线 - 中心巡线 - 偏差曲率计算。

不想随波逐流的大学生一枚,我们每个人都在努力奔跑 5110

stm32f103c8t6的中文字库

stm32的成熟中文字库,上手即用,操作简单

nbbskk的博客 3653

服务器 | Docker应用开发与部署的实践以及阿里云镜像加速配置

Docker是一个开源的容器化平台,通过将应用及其依赖打包成轻量级、可移植的容器,解决依赖兼容性问题。核心概念包括镜像(只读模板)、容器(运行实例)、Dockerfile(构建镜像的指令文件)和Docker Compose(管理多容器应用)。与虚拟机不同,Docker容器共享宿主机内核,更加轻量高效。安装步骤包括卸载旧版、配置阿里云镜像源、安装Docker并启动服务,还可配置镜像加速提升拉取速度。镜像操作涵盖构建(通过Dockerfile)、导出导入(便于移植)及查看详细信息。Docker简化了开发、交付和

鳄鱼杆的博客 1301

【HCIE】FRR+BFD+OSPF与BGP联动

FRR+BFD+OSPF与BGP联动

Wenrs的博客 1997

Linux 零基础万字入门指南(进阶详解版)

创建服务文件[Unit]Description=My Python Web Application # 服务描述After=network.target # 在网络服务启动后启动[Service]User=appuser # 运行服务的用户Group=appuser # 运行服务的组WorkingDirectory=/opt/myapp # 工作目录。

conkl的博客 1147

基于GA-BP遗传算法优化神经网络的多输入多输出数据预测-Python代码实现

多输入多输出的GA-BP神经网络

2301_80449389的博客 2308

Tomcat服务与运用

Tomcat 是一个由 Apache 软件基金会开发的开源 Web 应用服务器,主要用于运行基于 Java 的 Web 应用。

2301_81958733的博客 1078

【红绿灯识别】基于计算机视觉实现道路信号灯检测识别系统附Matlab代码

随着自动驾驶技术的快速发展,对道路交通信号灯的检测识别技术也提出了更高的要求。本文提出了一种基于计算机视觉的道路信号灯检测识别系统,该系统能够准确地检测和识别道路交通信号灯,并输出信号灯的颜色信息。该系统采用深度学习方法,利用卷积神经网络(CNN)对道路交通信号灯进行检测和识别。实验结果表明,该系统能够在复杂的环境中准确地检测和识别道路交通信号灯,具有较高的实用价值。道路交通信号灯是道路交通管理的重要组成部分,它能够有效地组织交通,提高道路通行效率,保障交通安全。

qq_59747472的博客 341

Termux安卓Linux终端环境配置与核心命令实战指南

Linux命令行环境是开发者、运维工程师和系统管理员的核心工具,它通过Shell解释器执行命令,实现对操作系统的直接控制与自动化管理。其技术价值在于提供了高效、灵活且可脚本化的系统交互方式,是服务器管理、软件开发、数据处理和网络调试的基石。在移动办公和碎片化学习场景下,将完整的Linux环境移植到便携设备的需求日益增长。Termux作为一款强大的Android终端模拟器,实现了这一目标,它通过pkg包管理器提供了丰富的软件生态,并支持Vim编辑器、Shell脚本编写、网络工具和进程管理等核心功能,让用户能在

weixin_33726318的博客 478

【OpenClaw从入门到精通】:Web控制台使用全解析——可视化配置与监控(2026实操版)

在OpenClaw的多种管理方式中,Web控制台提供了最直观、最友好的用户体验。通过图形化界面,用户可以轻松完成复杂的配置任务,实时监控系统状态,以及进行各种管理操作。对于不熟悉命令行的用户来说,Web控制台是最佳选择。

一键难忘的博客 1929

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Python开发者必备的Linux命令大全与实战技巧

Linux命令行是开发者与操作系统交互的核心工具,其基于文本的交互方式天然契合编程思维。通过管道(pipe)和重定向等机制,开发者可以将简单命令组合成复杂的数据处理流程,这正是Linux哲学的精髓所在。在Python开发场景中,熟练使用grep进行文本搜索、awk处理结构化数据、sed实现批量替换,能显著提升代码维护效率。系统监控命令如top/htop帮助诊断性能瓶颈,而find结合xargs可实现自动化文件管理。对于Web开发,netstat/ss等网络工具是服务调试的利器。掌握这些命令不仅能优化开发流程

447

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: 【Android】 Gradle 下载后本地使用方式(macOS / Windows通用)
下一篇: 【Web】域名与 Cookie 的关系:原理、规则与多级域名共享
ganshenml
博客等级 码龄16年 445粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ganshenml

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值