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

【Linux】sed 命令详解及使用样例:流式文本编辑器

【Linux】sed 命令详解及使用样例:流式文本编辑器

引言

sed 是 Linux/Unix 系统中一个强大的流式文本编辑器,名称来源于 “Stream EDitor”(流编辑器)。它允许用户在不打开文件的情况下对文本进行筛选和转换,是命令行环境下处理文本的重要工具。

基本功能

  1. 文本替换:查找并替换文本中的字符串
  2. 选择性处理:对匹配特定模式的行进行操作
  3. 文本删除:删除匹配特定模式的行
  4. 文本插入:在指定位置插入文本
  5. 行处理:按行号或范围处理文本

常用选项

  • -n:禁止自动打印模式空间内容,需要使用p命令手动打印
  • -e:允许在同一行中执行多个编辑命令
  • -i:直接修改原文件而不是输出到标准输出
  • -r-E:使用扩展正则表达式
  • -f:从文件中读取编辑命令

常用命令

  • s/pattern/replacement/flags:替换匹配的文本
    • 常用标志(flags):g(全局)、i(忽略大小写)、n(第n次出现)
  • p:打印匹配行
  • d:删除匹配行
  • a\:在匹配行后追加文本
  • i\:在匹配行前插入文本
  • c\:替换匹配行
  • y/源字符集/目标字符集/:字符转换

地址匹配

  • n:指定行号
  • n,m:指定行号范围
  • /pattern/:匹配正则表达式的行
  • addr1,+n:从addr1开始的n行
  • addr1,~n:从addr1开始,到下一个n的倍数行

使用示例

  • 利用sed命令选择并显示/etc/passwd中的最后一行
sed -n '$p' /etc/passwd

  • 利用sed命令选择并显示/etc/passwd中有root的行
sed -n '/root/p' /etc/passwd

  • 利用sed命令选择并显示/etc/passwd中以mail为开头的行
sed -n '/^mail/p' /etc/passwd

  • 利用sed命令将/etc/passwd中所有:替换为–
sed 's/:/-/g' /etc/passwd

  • 利用sed命令删除/etc/passwd中所有以首字母a到s开头的行
sed '/^[a-s]/d' /etc/passwd

  • 利用sed命令删除/etc/passwd中所有含有大写字母的行
sed '/[A-Z]/d' /etc/passwd

  • 结合sed命令列出/etc目录下目录文件的个数
ls -l /etc | sed -n '/^d/p' | wc -l

  • 结合sed命令查看用户为root的进程信息
ps aux | sed -n '/^root/p'

  • 结合sed命令查看用户为root的进程信息,将用户root信息改为大写ROOT
ps aux | sed -n '/^root/p' | sed 's/^root/ROOT/'

  • 利用sed命令将etc下目录文件中详细信息内容中的数字改为*号
ls -l /etc | sed 's/[0-9]/*/g'

参考资料

  • https://www.runoob.com/linux/linux-comm-sed.html
http://www.lqws.cn/news/188101.html

相关文章:

  • LLMControlsArm开源程序是DeepSeek 控制熊猫机械臂
  • react public/index.html文件使用env里面的变量
  • for(;;) 和while(1) 的无限循环用法对比,优缺点说明
  • Gerrit+repo管理git仓库,如果本地有新分支不能执行repo sync来同步远程所有修改,会报错
  • 【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
  • (nice!!!)(LeetCode每日一题)2434. 使用机器人打印字典序最小的字符串(贪心+栈)
  • 如何防止误删除rm (万恶之源)
  • 第二十九章 读写内部FLASH
  • 国产PC系统
  • S5P6818_驱动篇(24)UART驱动
  • 通过中脑刺激相关神经回路的纤维微解剖建立连接性
  • JavaSec-SPEL - 表达式注入
  • 山东大学《数据可视化》期末复习宝典
  • 怎么让大语言模型(LLMs)自动生成和优化提示词:APE
  • 在Markdown中使用MathType插入公式
  • next,react封装axios,http请求
  • Webhook 配置备忘
  • 浏览器工作原理06 [#]渲染流程(下):HTML、CSS和JavaScript是如何变成页面的
  • 基于Selenium+Python的web自动化测试框架
  • C++.OpenGL (3/64)着色器(Shader)深入
  • ceph 脚本,用于计算 rbd 文件存放 OSD 方法
  • 在UI界面内修改了对象名,在#include “ui_mainwindow.h“没更新
  • MySQL 索引优化(Explain执行计划) 详细讲解
  • 阿里140 补环境日志
  • JS-- for...in和for...of
  • IDEA 中 Undo Commit,Revert Commit,Drop Commit区别
  • 从微积分到集合论(1630-1910)(历史简介)——第4章——现代积分理论的起源(Thomas Hawkins)
  • Python | Windows11通过离线方式安装pyserial
  • idea中 maven 本地仓库有jar包,但还是找不到,解决打包失败和无法引用的问题———————————————— 版权声明:本文为博
  • 艾体宝案例丨Transavia如何借助LambdaTest测试平台高效起飞?