1 Sed语法及举例

在实际使用sed过程中经常使用字符串的替换、删除、查找等操作。Linux中的编辑器Vi、GVIM、emacs等都可以进行上述操作,但是大量进行操作的时候,效率很低。

地址参数 {
命令参数1
命令参数2
...
}
**对于符合地址参数的数据,依次执行命令参数1,命令参数2**

1.1 替换文件中的数据

  • 表示字符串替换的参数为s;
  • 表示替换数据行、数据区的参数为c
  • \表示换行

例1

将文件中含有machine字符串的数据行中的phi替换为beta字符串

# /machine/  -- 匹配所有machine所在行
# s -- 表示替换
sed -e '/machine/s/phi/beta/g' input.dat

例2

将文件中第5行数据替换为句子 Those who in quarrels interpose,mnust often wipea blood nose.

sed -e '5c \
Those who in quarrels interpose,mnust often wipea blood nose.'
input.dat

例3

将文件中的1-100行替换为下面两行

# 替换内容
How are you?
data be deleted sed -e '1,100c \
How are you? \
data be deleted !
' input.dat

1.2 移动文件中的数据

sed中的hold space可以暂存编辑中的数据,用函数参数w将文件数据搬动到文件内存储,或者使用函数参数r将文档中的内容搬到文件内

Hold space是sed用来暂存pattern space内数据的缓存器,当sed执行函数参数h,H时会将pattern space中的资料暂存到hold space;执行函数参数x,g,G时会将暂存的资料取到pattern space。

例1

将文件中前100数据,搬到文件第300行之后。

sed -f mov.scr input.dat

# scr中的内容
1,100 {
H
d
}
300G

其中

1,100{
H
d
}

表示先将前100行的数据,先存储到hold space(H),然后将pattern space中的内容进行删除。

300G

300G表示,将hold space中的内容,添加到pattern space(G)的第300行输出

例2

将文件中含有phi字符串的行,搬运至mach.inf文件中存储。

# w 表示将文档搬运到另一个文档进行存储
sed -e '/phi/w mach.inf' file

例3

将mach.inf文档中的内容,搬至文件中含beta字符串的数据行

# r 表示将一个文件搬运到另一个文件
sed -e '/beta/r mach.inf' file

1.3 删除文件中的数据

使用函数参数d 或者是 D可以进行删除

例1

删除文档中所有的空白行

# N 表示将空白行的下一行资料添加至pattern space
# /^$/D 表示删除空白行
sed -e '/^$/{
N
/^$/D
}' 文档

1.4 查找文件中的数据

sed -f gp.scr file

/omega/b
N
h
s/.*\n/
/omega/b
g
D

最新文章

  1. 弱省互测#2 t2
  2. Java Cookie和Session(转载)
  3. 无法自动调试 未能调试远程过程。这通常说明未在服务器上启用调试 WCF 托管在IIS上
  4. 2013 ACM区域赛长沙 K Pocket Cube hdu 4801
  5. windows live writer 下载及安装
  6. 本地windows下PHP连接远程oracle遇到的诸多问题
  7. WinCmd
  8. Excel开发
  9. 网站常用js代码搜集
  10. 我在vs文本编辑中常用的快捷键----常更新
  11. [linux]device eth0 does not seem to be present, delaying initialization
  12. Scala对MongoDB的增删改查操作
  13. C语言---指针变量详解3
  14. Redis不支持ssl
  15. LPAD在Oracle中和 mssql以及在MySQL中的不同用法 以及调用存储过程方法
  16. HDU 5154 Harry and Magical Computer bfs
  17. Django----解决跨域
  18. 【洛谷P1039】侦探推理
  19. 设置datalist指定行的背景色
  20. PHP 微信分享(及二次分享)

热门文章

  1. Invalid bound statement (not found): com.zheng.mapper.UserMapper.login
  2. elementUi使用dialog的进行信息的添加、删除表格数据时进行信息提示。删除或者添加成功的信息提示(SpringBoot+Vue+MybatisPlus)
  3. 同一台电脑安装两个不同版本的mysql。简单暴力有效
  4. python学习笔记---流程控制
  5. SoringCloud(四) - 微信获取用户信息
  6. CSS选择器大全48式
  7. Python基础之网络编程:2、OSI协议之七层协议
  8. 【CVE-2022-0543】Redis Lua沙盒绕过命令执行复现
  9. centos7 redis6.2.6安装
  10. Golang反射获得变量类型和值