sed命令

一、sed

  sed是用来编辑文本文件的命令

1、格式

  sed [参数]... [执行命令] [输入文件]...

2、参数

  -n:安静模式,只打印受影响的行,默认打印输入数据的所有内容

  -e:用于在脚本中添加多个执行命令一次执行,在命令行中执行多个命令通常不需要添加该命令

  -f filename:指定执行filename中的命令

  -r:使用扩展正则表达式,默认为标准正则表达式

  -i:将直接修改输入文件内容,而不是打印到标准输出设备

3、执行命令格式

  [n1][,n2]command

  [n1][~step]command

  其中一些命令可以在后面加上作用范围:

  sed -i 's/sad/happy/g' test # g表示全局范围

  sed -i 's/sad/happy/4' test # 4表示指定行中的第四个匹配字符串

  其中 n1,n2 表示输入内容的行号,它们之间为,逗号则表示从 n1 到 n2 行,如果为波浪号则表示从 n1 开始以 step 为步进的所有行;command 为执行动作

4、command动作指令

  s:行内替换

  c:整行替换

  a:插入到指定行的后面

  i:插入到指定行的前面

  p:打印指定行,通常跟-n来使用

  d:删除指定行

案例1:插入(a/i)

  sed '2a123' 1.txt          将1.txt文件中的第2行后面加一行123

  sed '1,3a123' 1.txt        将1.txt文件中的第1行到第3行后面都加一行123

  sed '2i123' 1.txt          将1.txt文件中的第2行前面加一行123

  sed '1,3i123' 1.txt        将1.txt文件中的1到3行前面都加一行123

 

案例2:整行替换(c)

  sed '2c123' 1.txt          将1.txt中的第二行替换为123

  sed '1,3c123' 1.txt          将1.txt中将1到3行都替换成123

 

案例3:条件替换(s)

  sed 's/123/456/' 1.txt        第所有行中的第一个123替换为456

  sed '1s/123/456/' 1.txt        将第1行中的第一个123替换为456

  sed '1s/123/456/g' 1.txt        将第1行中的所有123都替换为456

  sed 's/abc/xyz/gi' 1.txt        将1.txt中所有的abc都替换成xyz,i表示不区分大小写

  sed '1,3s/abc/xyz/gi' 1.txt      将1.txt中的第1行到第3行的abc都替换为xyz

 

案例3:删除(d)

  sed '2d' 1.txt            将1.txt中的第2行删除

  sed '1,2d' 1.txt            将1.txt中的第1行和第2行都删掉

 

案例4:打印(p)

  sed '2p' 1.txt            重复打印1.txt中的第2行

  sed '1,3p' 1.txt          重复打印1.txt中1到3行

  sed -n '2p' 1.txt          只打印1.txt中的第2行

  sed -n '1,3p' 1.txt          只打印1.txt中1到3行

  sed -n '/abc/p' 1.txt        打印1.txt中包含abc的行,跟grep类似

  sed -n '/abc/!p' 1.txt        打印1.txt中不包含abc的行,跟grep -v类似

  sed -n 's/abc/xyz/gp' 1.txt      只打印1.txt中匹配替换的行

 

原文地址:https://www.cnblogs.com/xwxxh/p/13346104.html