Linux sed命令总结

  • Post author:
  • Post category:linux


sed命令,采用的是流编辑模式,最明显的特点是,在sed处理数据之前,需要预先提供一组规则,sed按照此规则来编辑数据

sed文本处理工具的用法:

  1. 用法1:前置命令 | sed [选项] ‘条件指令’
  2. 用法2:sed [选项] ‘条件指令’ 文件.. ..

规则:

  • 条件可以是行号或者/正则/
  • 没有条件时,默认为所有条件
  • 指令可以是增、删、改、查等
  • 默认sed会将所有输出的内容都打印出来,可以使用-n屏蔽默认输出
  • 选项中可以使用-r选项,让sed支持扩展正则

sed命令的常用基本选项

  1. -n(屏蔽默认输出,默认sed会输出读取文档的全部内容)
  2. -r (让sed支持扩展正则)
  3. -i (sed直接修改源文件,默认sed只是通过内存临时修改文件,源文件无影响)


sed命令的-n选项

打印第四行

sed -n '4p' /etc/passwd

打印第3到5行

sed -n '3,5p' /etc/passwd

打印第3和5行

sed -n '3p;5p' /etc/passwd

打印奇数行

sed -n '1~2p' /etc/passwd

打印偶数行

sed -n '2~2p' /etc/passwd

打印包含root的行

sed -n '/root/p' /etc/passwd

打印bash结尾的行

sed -n '/bash$/p' /etc/passwd

sed -n 'p' /etc/passwd


sed命令的p指令案例

sed  -n 'p' a.txt            //输出所有行,等同于cat a.txt
sed  -n '4p' a.txt            //输出第4行
sed  -n '4,7p' a.txt        //输出第4~7行
sed  -n '/^bin/p' a.txt        //输出以bin开头的行
sed  -n '$=' a.txt            //输出文件的行数


sed命令的d指令案例

sed  '3,5d' a.txt             //删除第3~5行
sed  '/xml/d' a.txt            //删除所有包含xml的行
sed  '/xml/!d' a.txt         //删除不包含xml的行,!符号表示取反
sed  '/^install/d' a.txt    //删除以install开头的行
sed  '$d' a.txt                //删除文件的最后一行
sed  '/^$/d' a.txt             //删除所有空行


sed命令的s替换基本功能

vim  test.txt                //新建素材
2017 2011 2018
2017 2017 2024
2017 2017 2017

sed 's/2017/xxxx/'           test.txt
sed 's/2017/xxxx/g'          test.txt
sed 's/2017/xxxx/2'          test.txt
sed 's/2017//2'              test.txt
sed -n 's/2017/xxxx/p'      test.txt
sed 's/xml/XML/'  a.txt        //将每行中第一个xml替换为XML
sed 's/xml/XML/3' a.txt     //将每行中的第3个xml替换为XML
sed 's/xml/XML/g' a.txt     //将所有的xml都替换为XML
sed 's/xml//g'     a.txt     //将所有的xml都删除(替换为空串)
sed 's#/bin/bash#/sbin/sh#' a.txt  //将/bin/bash替换为/sbin/sh
sed '4,7s/^/#/'   a.txt         //将第4~7行注释掉(行首加#号)
sed 's/^#an/an/'  a.txt         //解除以#an开头的行的注释(去除行首的#号)


sed命令的多行文本处理

i: 在指定的行之前插入文本

a: 在指定的行之后追加文本

c: 替换指定的行

sed  '2a XX'   a.txt            //在第二行后面,追加XX
sed  '2i XX'   a.txt            //在第二行前面,插入XX
sed  '2c XX'   a.txt            //将第二行替换为XX



版权声明:本文为qq_42383970原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。