Linux三剑客之sed 命令基本用法

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/原内容/新内容/"
  • ^ :表示行首,在行首操作
  • :表示行尾,在行尾操作
  • :表示在前,或者在后
阅读剩余
THE END