sed初级使用-------shell学习(7)

se d三种用法形式

1.    sed [-F field-separator] ‘command’ file1 file2 …。field-separator必须用引号或双引号扩上。
2.    将sed指令写入脚本中,并且指定执行该脚本的解析器为“#!/bin/sed -f”,sed路径不同系统可能不一样。运行该脚本:test.sed file1 file2 …。
3.    将sed指令写入脚本中,执行sed –f scripfile file1 file2 …

command用单引号括起来对于使用转义字符来说很有意义。

 

 

简要的语法执行准则:

  1. 用“;”来表明不同的语句,不同语句之间相互独立,且按照从左到右的顺序执行。
  2. 每条语句中最多包含:条件 + 一个动作语句 + p(打印,当添加-n参数时使用)。语句中每个动作都是在前面的动作成功后才会执行,比如当动作是个替换词语的语句时,如果替换没有发生,则不会打印。
  3. 动作语句包括:替换词语、插入、添加、替换整行(前面动作都可在语句后添加打印p)、写文件、删除(这两个动作后面不能跟打印p)。

 

 

 

条件有下面几种形式

sed初级使用-------shell学习(7)_第1张图片

 

 

 

常用方法举例

1. sed ‘s/aaaa/bbb/g‘ a.txt 对a.txt的每一行进行操作,将aaaa替换为bbb

2. sed ‘s/aaa/bbb&/g‘ a.txt 对a.txt的每一行进行操作,在aaa前添加bbb

3. sed ‘s/    /bbb/g‘ a.txt 对a.txt的每一行进行操作,将制表符替换为bbb,制表符的输入方法:先按ctrl + v,再按tab键。
4. sed ‘s/aaa/bbb/g; s/bbb/ccc/g‘ a.txt 对a.txt的每一行进行操作,先执行第一个指令,再执行第二个指令
5. sed -f command a.txt command的内容相当于引号中的内容,执行command文件中的指令

添加对行的限制
6. sed ‘/two/ s/aaaa/bbb/g‘ a.txt 对a.txt的每一行进行操作,当该行中存在two时,执行替换操作
7. sed ‘5,6 s/aaaa/bbb/g‘ a.txt 对a.txt的每一行进行操作,当判定是5到6行时,进行替换操作
8. sed ‘5 s/aaa/bbb/g; 6 s/bbb/ccc/g‘ a.txt 对a.txt的每一行进行操作,先执行第一条指令,再执行第二条指令,每条指令都在判断所在行成功后才会执行替换指令

以上操作不管某行是否被操作,他都会被显示出来
为了屏蔽显示内容,可以通过参数-n实现,但是如果要显示某些行的内容,则可以通过参数p来实现
9. sed -n ‘5 s/aaa/bbb/g p‘ a.txt 对每一行进行操作,当判定为第5行时,检查是否可以进行替换,当第五行有发生替换时,显示该行,若第五行没有发生替>换,则不会显示
只看前面一条操作是否顺利执行,如果顺利,则在该时刻打印其结果,否则不打印

10. sed -n ‘5,6 p‘ a.txt 对于每一行,先判断是否时第5至6行,是则执行打印操作

删除某行
11. sed ‘5 d‘ a.txt 对于每一行,先判断是否时第5行,是则删除该行
12. sed ‘5 !d‘ a.txt 只有第五行不删除
13. sed ‘1,/^two/ d‘ a.txt 删除行,从第一行直到第一个空行

插入一行
14. sed ‘3 i/haha‘ a.txt 在第三行的位置插入一行haha
添加一行
15. sed ‘3 a/haha‘ a.txt 在第三行后的位置插入一行haha
替换整行
16. sed ‘3 c/haha‘ a.txt 将第三行整行替换为haha

指令中写文件
17. sed ‘3,4 w temp‘ a.txt 判断是否时3至4行,判断成功则写入temp文件

在指定位置退出
18. sed ‘s/aaa/bbb/g; 3 q‘ a.txt 在第三行执行完后退出,q参数前是判断句     

你可能感兴趣的:(File,脚本,command)