sed 命令 用法简介

 

 

替换命令

1. sed 一般被用来做字符替换,先从最简单的替换命令开始:
 
sed s/afei/yujian/  myfile.txt -------- 这条命令的意思是把myfile.txt里面的afei 替换为yujian.

注意:sed命令是按行替换,上面的语句严格来说是会用yujian替换 myfile.txt 文件里每一行的第一个afei.

模式空间   ——  保存当前输入行的一个临时缓冲器;

2.用sed 命令替换特定行的字符
sed 命令有两种方式来限定要替换的行
(1)正则表达式匹配行
 sed /sdu/s/afei/yujian/ myfile.txt -------这条命令用来将包含sdu字符行中的afei 替换为yujian.
(2)行号定义
 sed 1s/afei/yujian/ myfile.txt    -------这条命令用来第一行中的afei 替换为yujian.
 sed /as/,/b/s/afei/yujian/ myfile.txt --------- 这条命令中地址是取的范围表示第一个含有字符as的行和第一个含有字符b行
                                                之间的所有行(范围应该是[ ])。
注意:遇到地址范围匹配时我们可能有以下疑问
( 1).区间是闭区间还是开区间?
( 2).如果匹配到as(b)的行怎么办?
( 3).b的行在as的行之前?
测试结果表明:区间是闭区间,命令执行过程应该是首先匹配as如过匹配到,就开始执行替换,直到匹配到b或者是文件结束。

3.组合命令
 可以认为是用简化的方式执行多个相似的替换命令。
 (1)sed s/afei/yujian/ /
       s/zhangfei/cici/ myfile.txt -------反斜杠方式和shell中的|相似
 (2)sed 's/afei/yujian/ ;s/zhangfei/cici/' myfile.txt -------反斜杠方式和shell中的|相似


(3) 1,35{
       s/afei/yujian/
        s/zhangfei/cici/
       }
 config .date ----右大括号必须单独一行,一般是定义在一个文档里通过sed -f 命令执行。

4.可选标识符
 
-n 标识符(控制替换模式空间内的第几个匹配模式)

  sed ‘s/afei/yujian/2’ myfile.txt -------这条命令用来将文档中每一行出现的第二个afei 替换为yujian. 

  -g 标示符
  sed 'sed s/afei/yujian/g'  myfile.txt  ----------这条命令用来将文档中每一行出先的所有afei 替换为yujian. 

  -w 标示符
 sed 'sed s/afei/yujian/w myfile_new.txt'  myfile.txt  ----------这条命令用来将文档中每一行出先的第一个afei 替换为yujian
                                                                 并写入myfile_new.txt文件.  如果文件不存在会创建该文件,如果有
                                                                  会覆盖掉原来的内容(注意 文件名一定不要相同,否则你会拿到一个空  文件)

   -p 标示符
 
  sed 'sed s/afei/yujian/p'  myfile.txt  ----------这条命令用来将文档中每一行出先的所有afei 替换为yujian. 立刻显示

    5.特殊字符 (只应用在替换字符串)

   & -------代表模式项中被匹配的字符
 sed 'sed s/afei/&yujian/p'  myfile.txt  ----------这条命令用来将文档中每一行出先的所有afei 替换为afeiyujian

  /n --------代表模式中第 n 个 /( /)匹配的字符串
举例说明  文本 yutest 有一行数字“12 34”
 sed 's//([0-9][0-9]/) /([0-9][0-9]/)//2 /1/' yutest 执行后的结果就是 “34 12”

这里面 用 /( /)括起来的正则表达式[0-9][0-9] 代表一个两位的数字

  /     ------ 转义字符(跟其他语音中的转义字符相同,屏蔽特殊字符的特定含义)

 

删除命令

 命令格式【行定位地址】d

 sed /afei/d  myfile.txt  ----------这条命令用来将文档中包含afei的行,整行删除。

下面的几个命令,我在HPlinux 系统里 不能直接用命令行的方式运行,但是可以
写在脚本文件里执行(TMD)
注意一定要分两行执行 ,"/"就是一转义字符,转义回车。

-------------------
添加命令
 命令格式【行定位地址】a/
 文本

 sed '/afei/a/
 ddd' myfile.txt  ----------这条命令用来在文档中包含afei的行下插入一行ddd。

插入命令
 命令格式【行定位地址】i/
 文本
  sed '/afei/a/
 ddd' myfile.txt  ----------这条命令用来在文档中包含afei的行的上一行插入一行ddd。

行替换命令
 命令格式【行定位地址】c/
 文本
  sed '/afei/a/
 ddd' myfile.txt  ----------这条命令用来在文档中包含afei的行替换成ddd。

替换命令可以用行范围限定:
  sed '1,3/afei/a/
 ddd' myfile.txt  ----------这条命令用来在文档中1,3行包含afei的行替换成 ddd(有可能是3行替换成一行)。


文本插入命令

sed '/aa/r yutest' yu   ------这条命令用来使得文件yu在包含“aa”的每一行下插入文本yutest包含的内容。

 

 

<think>好的,用户想了解如何使用sed命令进行文本处理。我需要根据提供的引用内容来组织回答。首先,用户可能对sed的基本功能不太清楚,所以先介绍sed是什么,比如流编辑器,处理文本查找、替换、删除、添加等操作。引用2提到sed从标准输入读取数据,执行命令后输出到标准输出,默认不修改原文件,需要用-i选项。这点很重要,要特别说明。 接下来是具体用法。用户可能需要常见的操作示例,比如替换文本。根据引用3,替换命令是s,格式是's/原内容/新内容/修饰'。比如替换每行第一个匹配项,或者全局替换。可以举例子,比如将所有的"apple"换成"orange",使用s/apple/orange/g。 然后是删除行,引用3提到d命令。比如删除包含"test"的行,可以用'/test/d'。添加和插入行,a和i命令,比如在匹配行后添加内容,或者在行前插入。比如在第三行后添加一行,使用'3a\新内容'。 还有打印特定行,p命令,但通常和-n选项一起用,避免重复输出。比如打印第五行,用'5p'。 需要注意的地方,引用1和2都提到默认不修改原文件,用-i才会保存更改。另外如果命令报错,可能是sed未安装,需要安装,比如用yum或dnf。用户可能遇到路径或权限问题,但引用里没提到,暂时不涉及。 最后生成相关问题,参考示例中的问题,比如如何替换多个模式、sed与awk的区别、如何删除空行等。要确保问题相关且覆盖用户可能感兴趣的方面。</think># Linux sed命令使用详解 ## 一、基础语法格式 sed命令的标准格式为: ```bash sed [选项] '操作命令' 文件名 ``` 其中`-e`选项可以连接多个命令,`-n`选项抑制默认输出,`-i`选项直接修改文件内容[^2][^4] ## 二、核心功能操作 ### 1. 文本替换(最常用) 格式:`'s/原内容/新内容/[修饰]'` - 替换每行第一个匹配项: ```bash sed 's/apple/orange/' file.txt ``` - 全局替换(添加g修饰): ```bash sed 's/apple/orange/g' file.txt ``` ### 2. 删除行操作 - 删除包含"error"的行: ```bash sed '/error/d' file.log ``` - 删除空行: ```bash sed '/^$/d' file.txt ``` ### 3. 添加/插入内容 - 在第三行后追加内容: ```bash sed '3a\插入内容' file.txt ``` - 在匹配行前插入: ```bash sed '/pattern/i\新行内容' file.txt ``` ### 4. 行范围操作 - 处理第5-10行: ```bash sed '5,10s/old/new/g' file.txt ``` ## 三、实战案例演示 ### 批量修改配置文件 ```bash sed -i 's/#Port 22/Port 2202/' /etc/ssh/sshd_config ``` ### 日志文件处理 ```bash sed -n '/2023-10-01 14:00/,/2023-10-01 15:00/p' access.log > peak.log ``` ## 四、注意事项 1. 使用`-i`前建议先测试命令 2. 正则表达式需要转义特殊字 3. 处理含空格路径时使用双引号 4. MacOS系统需要额外参数`-i ''`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值