一、基本介绍
sed是一款常用的文本处理工具,它可以根据指定的规则进行文本的修改、替换、删除等操作。该工具可以读入文件内容,并将其输出到屏幕上或者直接编辑原始文件。sed的语法比较复杂,但是只要掌握了其中的规则,就可以灵活地处理各种文本文件。
二、替换字符串
sed最常用的操作就是替换字符串,可以通过以下命令实现:
sed 's/old_string/new_string/g' filename
其中,s表示替换命令,old_string表示待替换的字符串,new_string表示替换后的字符串,g表示全局替换。如果没有g,则只会替换第一次出现的字符串。
例如,想将文件中所有的"apple"替换成"orange",可以使用下面的命令:
sed 's/apple/orange/g' filename
三、行编辑
sed还可以按行对文本进行处理,以下是几个常用的命令:
1、在指定行前或后插入内容:
sed '2i\Insert text' filename # 在第2行前插入 sed '2a\Insert text' filename # 在第2行后插入
2、删除指定行:
sed '2d' filename # 删除第2行
3、替换指定行:
sed '2c\Replace text' filename # 替换第2行
4、显示指定行:
sed -n '2p' filename # 显示第2行
四、正则表达式
正则表达式是sed的重要组成部分,可以通过正则表达式匹配和替换文本中的特定字符串。
正则表达式语法比较复杂,以下是几个常用的表达式:
1、^表示匹配行首,$表示匹配行尾:
sed '/^start/p' filename # 显示所有以start开头的行 sed '/end$/p' filename # 显示所有以end结尾的行
2、.表示匹配任意一个字符,*表示匹配前面的字符任意多次:
sed '/a.*b/p' filename # 显示含有a和b之间任意字符的行
3、[]表示匹配指定字符集,^表示不匹配指定字符集:
sed '/[aeiou]/p' filename # 显示含有元音字母的行 sed '/[^aeiou]/p' filename # 显示不含有元音字母的行
五、示例代码:
下面是一个示例代码,将文本文件中的所有"Apple"替换成"Orange",并在文件第2行后插入一行"Citrus":
sed -i 's/Apple/Orange/g;2a\Citrus' filename