sed常用方法

本文介绍SED命令的基础用法,包括打印、删除、插入、追加和替换文本行的方法。涵盖SED命令行参数详解,如打印指定行、删除特定行、在文件中插入或追加文本及替换字符串等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sed的几个参数

学习资料:https://blog.51cto.com/oldboy/5436668

参考: https://www.linuxcool.com/sed

https://wangchujiang.com/linux-command/c/sed.html

https://zhuanlan.zhihu.com/p/134651377

  • a 追加,在指定行后添加一行或多行文本
  • d 删除指定的行
  • c 替换指定行
  • i 插入,在指定行前添加一行或者多行文本
  • p 打印模式空间内容,通常p会与选项-n一起使用

打印指定行sed -n

# 打印第3行
sed -n '3p' filename

# 打印第3行到最后一行的内容
sed -n '3,$p' filename

删除行d

# 删除第5行
sed -i '5d' filename

# 删除第N到M行
sed -i 'N,Md' filename

# 删除最后一行
sed -i '$d' filename

删除包含字符串的行

# 删除包含"cat"的行
sed -i '/cat/d' filename

插入i(找到的行前添加)和追加a(找到的行后添加)

# 在第4行前插入test
sed '4i test' filenam

# 在以cat开头的行前插入test
sed '/^cat/i test' filename

# 在第4行后追加test
sed '4a test' filename

# 在以cat开头的行后追加test
sed '/^cat/a test' filename

在第一行插入和最后一行插入

# 这是在第一行前添加字符串
sed '1i\添加的内容' file

# 这是在最后一行行前添加字符串
sed '$i\添加的内容' file

# 这是在最后一行行后添加字符串
sed '$a\添加的内容' file

替换字符串

# 常用写法 sed "s///"
sed "s/原字符串/替换字符串/" filename

# 修改SELinux的状态为permissive
# 匹配以SELINUX=开头的任何字符
## ^ 以什么开头
## .* 匹配所有字符
sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config

# 替换字符串,g表示全局替换
# 替换apt源地址
sed -i "s/cn.archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list

# 高级用法
## .* 匹配所有字符
sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config

测试模式

# sed不加参数运行时并不会真的生效
## 测试删除第5行
sed '5N' filename

# 删除第5行(生效)
sed -i '5N' filename

sed取消注释

原文链接:https://blog.youkuaiyun.com/x10230729/article/details/103375550

注释掉含有“字符串”的行

# 注释掉含有“swap”的行
## & 符号在sed命令中代表上次匹配的结果。
sed -i 's/^[^#].*swap*/#&/g' fstab

取消含有字符串swap的行最前面的注释符号#

# 取消含有字符串swap的行最前面的注释符号#
## //两杠表示空格,以空格替换#,等价取消#。
sed -i '/^#.*swap/s/^#//g' fstab
# 删除注释行
sed -i '/^#/d' file1
# 删除空格行
sed -i '/^$/d' file1
# file1:删除每行第一个字符
sed -i 's/.//'
# 删除每行前两个字符
sed  -i 's/..//' file1

删除每行前k个字符,例如k=5

# 删除每行前k个字符,例如k=5 
sed  -i 's/.\{5\}//' file1

将文件的1-4行注释掉

# 将文件的1-4行注释掉
sed -i '1,4s/^/#/g' file1
### 关于 Linux 中 `sed` 命令的使用方法 #### 一、基本概念 `sed` 是一种流编辑器,在 Linux 系统中用于对文件或文本流进行查找、替换、插入和删除等操作[^1]。 #### 二、基本语法结构 命令的一般形式如下所示: ```bash sed [选项] '命令' 文件名 ``` 其中,常用的选项有 `-n`(只打印处理过的行)、`-e`(允许多个编辑命令)等;而命令部分则是具体的操作指令,比如`s/old/new/g`(全局替换字符串)。 #### 三、简单实例展示 ##### 替换特定字符 要将文件中的某个单词替换成另一个词,可以这样写: ```bash sed 's/旧字串/新字串/' filename.txt ``` 这条语句会把每一行第一次出现的“旧字串”改为“新字串”。如果想要全部替换,则可以在最后加上标志g,即变为`s/旧字串/新字串/g`[^2]。 ##### 删除含有某模式的整行 当需要移除包含特定关键词的所有行时,可以用下面的方式实现: ```bash sed '/pattern/d' file.txt ``` 这里 `/pattern/` 表达的是正则表达式匹配条件,“d”表示删除满足该条件的那些行[^3]。 ##### 插入新行之前或之后 要在某些位置前后添加新的内容,可通过以下两种方式之一达成目的: - 在指定行前加一行:“a\ 新增的内容” ```bash sed 'line_number a\ new content here' inputfile > outputfile ``` - 或者是在给定行后面追加一行:“i\ 要加入的信息” ```bash sed 'line_number i\ insert this line before specified one' source_file > destination_file ``` 注意:以上例子均假设直接在终端运行,并且可能需要根据实际情况调整路径名称以及是否重定向输出至其他地方[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

教Linux的李老师

赞赏是第一生产力

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

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

打赏作者

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

抵扣说明:

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

余额充值