sed总结

sed总结:

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
sed命令行格式为:
sed [-nefri] ‘command’ 输入文本

常用选项:
-n∶在一般 sed 的用法中,所有来自 STDIN(指键盘输入到缓冲区里的东西)的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑;
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶直接修改读取的档案内容,而不是由萤幕输出。

常用命令:
a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~

s ∶取代,可以直接进行取代的工作

注意要点:选项放在单引号外,命令放在单引号里面

示例:

删除某行

sed -i '1d' sedtest.sh







显示某行

sed -n '1p' sedtest.sh


使用模式进行查询

 sed -n '/wuzhan/p' sedtest.sh       #显示包含关键字的所有行


在第一行后增加

 sed '1a wuzhan12345' sedtest.sh

sed替换总结:

1. sed替换的基本语法为:

sed 's/原字符串/替换字符串/'

单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义。

2. 单引号” ‘ ’”是没有办法用反斜线”\”转义的,这时候只要把命令中的单引号改为双引号就行了,格式如下:

# 要处理的字符包含单引号
sed "s/原字符串包含'/替换字符串包含'/"

3. 命令中的三根斜线分隔符可以换成别的符号,有时候替换目录字符串的时候有较多斜线,这个时候换成其它的分割符是较为方便,只需要紧跟s定义即可。

# 将分隔符换成问号”?”:
sed 's?原字符串?替换字符串?'


4. 可以在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个,例如:

# 替换所有匹配关键字
sed 's/原字符串/替换字符串/g'

5. 一些特殊字符的使用

  ”^”表示行首

  ”$”符号如果在引号中表示行尾,但是在引号外却表示末行(最后一行)
  

# 注意这里的 " & " 符号,如果没有 “&”,就会直接将匹配到的字符串替换掉
sed 's/^/添加的头部&/g'      #在所有行首添加 sed 's/$/&添加的尾部/g'      #在所有行末添加 sed '2s/原字符串/替换字符串/g'  #替换第2行 sed '$s/原字符串/替换字符串/g' #替换最后一行 sed '2,5s/原字符串/替换字符串/g' #替换2到5行 sed '2,$s/原字符串/替换字符串/g' #替换2到最后一行

 

6.批量替换字符串

sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径`
sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir

 

7. sed处理过的输出是直接输出到屏幕上的,使用参数”i”直接在文件中替换。

# 替换文件中的所有匹配项
sed -i 's/原字符串/替换字符串/g' filename

8. 多个替换可以在同一条命令中执行,用分号”;”分隔,其格式为:

# 同时执行两个替换规则
sed 's/^/添加的头部&/g;s/$/&添加的尾部/g'

<think>好的,我现在需要帮用户总结sed命令的用法和功能,并且提供实例。用户可能已经了解了一些基本命令,比如awk和scp,现在想深入学习sed。首先,我应该回顾自己关于sed的知识,确保信息准确。 首先,sed是流编辑器,主要用于文本处理,比如替换、删除、插入等操作。它按行处理输入,可以配合正则表达式,这点和awk类似,但sed更专注于编辑。用户可能想知道基本语法、常用选项和实际例子。 基本语法是`sed [选项] '命令' 输入文件`。需要解释选项,比如-n抑制默认输出,-e允许多个命令,-i直接修改文件。然后,常用的命令如s替换、d删除、p打印、a/i/c添加行等。每个命令都需要例子说明。 接下来是功能总结,比如替换文本、删除行、插入和追加、行替换、打印特定行、使用正则表达式、范围操作等。每个功能都要有实例,比如替换命令s的用法,删除空行,在行后追加文本等。 还要注意用户可能需要的实际应用场景,比如批量替换文件中的字符串,处理日志文件,或者自动化脚本中的文本处理。需要确保例子覆盖这些场景,帮助用户理解如何应用。 同时,用户提供的引用中有关于awk和模式匹配的例子,可能用户对正则表达式有一定了解,所以可以强调sed中正则的使用。比如替换以开头的行,或者处理特定模式的范围。 最后,生成相关问题,帮助用户进一步学习,比如sed和awk的区别,高级用法,常见错误处理等。这些问题需要贴合用户可能遇到的后续疑问。 检查是否有遗漏,比如sed的保持空间和模式空间,但可能用户只需要基础用法,所以先不深入。确保每个例子正确,语法正确,比如替换命令中的分隔符可以用/或者其他字符,需要说明。另外,-i选项的危险性需要提醒,避免数据丢失。 总结结构:先概述sed,然后基本语法和选项,详细命令和实例,功能总结,最后相关问题。确保用中文,行内公式正确(虽然这里可能用不上),独立公式单独成段,但sed命令较多代码块,需要用代码块展示例子。 现在开始组织内容,确保清晰易懂,实例实用,覆盖主要功能点。</think>### sed命令用法及功能总结 sed(Stream Editor)是Linux系统中基于行的流编辑器,主要用于文本替换、删除、插入等操作。其核心特点是通过正则表达式匹配模式处理文本流,适用于批量编辑或自动化脚本。 --- #### 一、基本语法与选项 基本命令格式: ```bash sed [选项] '命令' 输入文件 ``` 常用选项: - `-n`:抑制默认输出(需配合`p`命令显式打印) - `-e`:允许多个编辑命令串联,如 `sed -e 's/a/A/' -e 's/b/B/'` - `-i`:直接修改文件内容(**慎用**,建议先测试再使用) - `-r`:启用扩展正则表达式(简化语法) --- #### 二、常用命令与实例 1. **替换文本** ```bash sed 's/原字符串/新字符串/[修饰符]' 文件名 ``` - 实例:替换文件中的`hello`为`HELLO`(默认仅替换每行第一个匹配项) ```bash sed 's/hello/HELLO/' test.txt ``` - 全局替换(添加修饰符`g`): ```bash sed 's/hello/HELLO/g' test.txt ``` - 指定行替换(如第2行): ```bash sed '2s/hello/HELLO/' test.txt ``` 2. **删除行** ```bash sed '行范围d' 文件名 ``` - 实例:删除第3行 ```bash sed '3d' test.txt ``` - 删除空行: ```bash sed '/^$/d' test.txt ``` 3. **插入与追加行** - **插入**(在指定行前插入):`i\` ```bash sed '2i\插入内容' test.txt ``` - **追加**(在指定行后追加):`a\` ```bash sed '/pattern/a\追加内容' test.txt ``` 4. **行替换** ```bash sed '行范围c\新内容' 文件名 ``` - 实例:将第5行替换为`New Line` ```bash sed '5c\New Line' test.txt ``` 5. **打印特定行** ```bash sed -n '行范围p' 文件名 ``` - 实例:打印第10-20行 ```bash sed -n '10,20p' test.txt ``` --- #### 三、进阶功能 1. **正则表达式匹配** - 替换以`http://`开头的行: ```bash sed 's/^http:\/\//https:\/\//' urls.txt ``` - 删除包含`error`的行: ```bash sed '/error/d' log.txt ``` 2. **范围操作** - 在`start`和`end`标记之间删除内容: ```bash sed '/start/,/end/d' config.txt ``` 3. **引用匹配内容** - 使用`&`引用整个匹配项,或`\1`引用分组: ```bash sed 's/[0-9]\+/(&)/' data.txt # 将数字用括号包裹 ``` --- #### 四、综合实例 1. **批量替换文件扩展名** ```bash ls *.txt | sed 's/\.txt$/.bak/' | xargs -I{} mv {}.txt {} ``` 2. **提取XML标签内容** ```bash sed -n 's/<title>\(.*\)<\/title>/\1/p' webpage.html ``` 3. **过滤日志时间范围** ```bash sed -n '/2023-10-01 08:00:00/,/2023-10-01 09:00:00/p' app.log ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值