Linux命令:文本处理工具sed详解
目录
一、概述
二、用法
1、基本语法
2、常用选项
3、命令格式
4、编辑命令
5、获取帮助
三、 示例
1、替换字符串
2、删除行
(1)删除包含"string"的所有行
编辑
(2)删除从第1行到第10行的所有行
3、插入行
(1)在匹配"string"的行之前插入一行文本
(2)在匹配"string"的行之后插入一行文本
4、打印行
5、地址范围
四、高级用法示例
1、复合命令
2、脚本模式
五、 注意事项
一、概述
sed(stream editor)是Linux/Unix系统中的一个强大的文本处理工具,它可以从标准输入读取数据,执行编辑命令,然后将修改后的输出发送到标准输出。sed命令非常适用于文本文件的处理,包括查找、替换、删除、添加行等操作,而无需修改原始文件。
熟练掌握它sed可以极大地提高文本处理效率。
二、用法
1、基本语法
sed的基本命令格式如下:
sed [选项] '命令' 文件
或者用于处理标准输入:
sed [选项] '命令'
2、常用选项
-e 或 --expression:指定要执行的一个或多条sed命令。
-f 或 --file:从指定的文件中读取sed命令。
-n 或 --quiet:抑制默认输出,只打印那些由p或=命令产生的行。
-i 或 --in-place:直接修改输入文件而不是输出到标准输出。
-u:使用-i时启用未缓冲模式,这对于大型文件尤其有用。
-l 或 --line-length:设置每行打印字符数。
3、命令格式
sed命令通常包含地址和动作,格式如下:
地址 { 动作 }
如果省略了地址,默认对所有行执行动作。
4、编辑命令
sed 的编辑命令非常多,但以下是一些最常用的:
- s/pattern/replacement/flags:替换操作。将匹配 pattern 的内容替换为 replacement。flags 可以是 g(全局替换),i(忽略大小写)等。
- d:删除操作。删除匹配的行。
- p:打印操作。打印匹配的行(通常与 -n 选项一起使用)。
- a\text:在匹配行之后追加文本 text。
- i\text:在匹配行之前插入文本 text。
- c\text:用文本 text 替换匹配的行。
5、获取帮助
输入如下命令:
sed –-h
出现如下图所示的帮助信息:
三、 示例
1、替换字符串
将文件中所有的"oldstring"替换为"newstring":
sed 's/oldstring/newstring/' file12.txt
实际操作如下:
全局替换(即替换每一行中所有的匹配项):
sed 's/oldstring/newstring/g' file.txt
2、删除行
(1)删除包含"string"的所有行
sed '/string/d' file.txt
实际操作如下:
(2)删除从第1行到第10行的所有行
sed '1,10d' file.txt
3、插入行
(1)在匹配"string"的行之前插入一行文本
sed '/string/i\
New line inserted here.' file.txt
(2)在匹配"string"的行之后插入一行文本
sed '/string/a\
New line inserted here.' file.txt
4、打印行
打印包含"string"的所有行:
sed -n '/string/p' file.txt
实际操作如下:
5、地址范围
指定操作作用于某一行或一组行:
sed '10,20s/old/new/' file.txt 替换第10到第20行中的old为new
四、高级用法示例
1、复合命令
可以组合多个命令,用分号;分隔:
sed '1s/^/ /; 2s/^/ /' file.txt 第1行和第2行前加
2、脚本模式
可以将多个命令写在一个文件中,然后用-f选项来运行这个脚本文件:
echo "s/old/new/" > sedscriptsed -f sedscript file.txt
五、 注意事项
1、sed命令是区分大小写的。
2、使用sed直接修改文件时要小心,因为一旦修改无法撤销。
3、对于复杂的文本处理任务,可能需要结合正则表达式或其他命令一起使用。
文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。