Linux sed 命令

Linux sed 命令

sed命令的基本语法如下:

sed [options] commands [inputfile...]

options表示sed命令的一些选项
  • -n 取消默认输出
  • -e 多点编辑,可以执行多个子命令
  • -f 从脚本文件中读取命令(sed操作可以事先写入脚本,然后通过-f读取并执行)
  • -i 直接编辑原文件
  • -l 指定行的长度
  • -r 在脚本中使用扩展表达式
sed的动作:
  • a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
  • d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
  • i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  • s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!
    新建一个test.txt

image.png

1、新增

实现第4行下新增一行数据,不改变原有文件内容。

sed -e 4a\ggg test.txt 

image.png

2、删除

nl test.txt |sed '1,2d'
或者
sed -e '1,2d' test.txt

image.png

3、打印/查询

数据的搜寻并显示
找到test.txt中的有a的行。

 nl test.txt | sed -n '/a/p' 

使用-n的时候将只打印包含模板的行。

4、替换

sed '位置参数 s/pattern/replaced/[flag]'

pattern为要替换的文本,支持正则表达式,replaced表示用来替换的一般字符串(不支持正则表达式)。

flag是替换标志,用来影响匹配替换的规则:

  • g 全局匹配,会替换文本行中所有匹配的字符串
  • 十进制n 替换文本行中第n个匹配的字符串
  • p 替换第一个匹配的字符串,并且将缓冲区输出到标准输出
  • w 替换第一个匹配的字符串,并且将改动的行输出到磁盘文件中
  • 缺省 替换第一个匹配的字符串

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.fengpt.cn/archives/linuxsed命令