sed
(stream editor)是Linux和Unix系统中一个非常强大的文本处理工具。它主要用于对文本文件进行查找、替换、删除、插入等操作。sed
命令通过逐行读取文件内容,并对每一行进行指定的处理,然后将处理后的结果输出到标准输出(通常是屏幕)或重定向到另一个文件。
1. 基本用法
行首添加
sed -i "s/^/要添加的内容/g" 文件名
行尾添加
sed -i 's/$/要添加的内容/g' 文件名
匹配内容前添加
sed -i 's/原内容/要替换的内容&/g' 文件名 //注意&符号
匹配内容后添加
sed -i 's/原内容/&要添加的内容/g' 文件名 //注意&符号
2. 行操作
删除空行
sed -n '/^$/p' 1.txt //显示空行
sed '/^$/d' 1.txt //删除空行
sed -i '/^$/d' 1.txt //删除源文件中的空行
删除指定行
sed -i '1d' 文件名 //删除第一行,用法 :sed 'Nd' N代表行数
删除最后一行
sed -i '$d' 文件名 // $ 表示尾行
删除区间(行数,如5-7)
sed -i '5,7d' 文件名 //删除7-7行
删除不连续行(1.5,9,最后一行)
sed -i '1d;5d;9d;$d' 文件名 //删除1,5,9和最后一行
取反
sed -i '3,6!d' 文件名 //删除第3到6行以外的行
将空行替换为指定内容
sed -n 's/^$/要替换的内/p' 文件名 //输出已替换内容的空行
sed 's/^$/123/p' 文件名 //输出全部内容(包含已替换的空行)
sed -i 's/^$/要替换的内容/g' 文件名 //替换空行为 要替换的内容
删除包含特定字符的行
sed -i '/特定字符/d' 文件名 //删除包含特定字符的行,有包含就匹配
sed -i '/特定字符1\|特定字符2/d' 文件名 //删除同时匹配特定字符1和2的行
删除以 特定字符 开头的行
sed -i '/^特定字符/d' 文件名 //删除以 特定字符 开头的行
删除以R或者F开头的行
sed -i '/^[RF]/d' 文件名 //删除以R或者F开头的行
删除某个特定字符结尾的行
sed -i '/特定字符$/d' 文件名 //删除特定字符结尾的行
删除以X或者M结尾的行
sed -i '/$[XM]$/d' 文件名 //删除以X或者M结尾的行
删除以大写字母开头的行
sed -i '/^[A-Z]/d' 文件名 //删除以大写字母开头的行
删除包含字母的行
sed -i '/[A-Za-z]/d' 文件名
删除包含数字的行
sed -i '/[0-9]/d' 文件名
3. 高级组合用法
删除指定行以及包含内容的行
sed '1,5{/包含的内容/d;}' 文件名
删除包含指定内容及下一行的内容
sed '/包含的内容/{N;d}' 文件名
4. 参数解释
-i
:表示重定向写入,会直接将修改写入到文件中s
:表示替换,例如:"s/原内容/新内容/"
^
:表示行首,在行首操作$
:表示行尾,在行尾操作&
:表示在前,或者在后