1 Sed操作参数

1.1 q

参数q表示跳离sed

[address1]q
  • sed执行跳离动作的时候,会停止输入pattern space数据,同时停止数据送到标准输出文件。

例1

对于文件执行script_file内的编辑指令,除非遇到“Linux”字符串

  • 无论script_file内是何种指令,使用者只要在命令行上用指令“/Linux/q”,参数q会强迫sed遇到“Linux”时做跳离动作。
sed -e '/Linux/q' -f script_file input.dat

1.2 =

参数=表示印出资料的行数

[address1,address2]]=

# 显示行号和内容
sed -e '=' input.dat # 文件内容是
The UNIX
Operating System # 输出内容是
1
The UNIX
2
Operating System

1.3 #

#用于表示注释

1.4 N

N 表示添加下一条数据在pattern space内,sed在执行时,将下一行数据读入并添加在pattern space内,数据间的换行使用\n表示。使用N相当于每两行进行处理依次,依次向下进行。

n 表示读入下一行,覆盖前一行。

[address1,address2]]N

# 文件内容
The Unix
Operating System #执行
sed -e 'N' -e's/\n/ /' input.dat # result
The Unix Operating System

1.5 D

参数D表示删除pattern space中第一行数据

[address1,[address2]]D
  • pattern space中只有一行数据的时候,D与d的功能是相同的。
  • 当pattern space内有多行数据的时候,D只删除第一行,d则全部删除
  • D表示执行删除后,pattern space内不添加下一行数据,将剩下的数据重新执行sed script;
  • d则是读入下一行后执行sed script

1.6 P

参数P表示打印出pattern space内第一行资料。

[address1,[address2]]P

例1

输出input.dat文件内奇数行资料。假设input.dat文档如下:

The
Unix
System # 执行下列命令
sed -e 'N' -e 'P' input.dat #result
The
System

1.7 h

参数h表示暂存pattern space的资料至hold space

[address1,address2]]h
  • sed执行暂存动作时,会覆盖掉hold space内原来的数据。当sed全部执行结束时,hold space内数据会自动清除。

1.8 H

H与h区别是,sed执行h的时候,数据覆盖掉hold space内原来的内容,H会添加hold space原来的数据之后。

H h都是向hold space中添加数据。

1.9 g

参数g表示将hold space内的资料放回pattern space内。

[address1,[address2]g
* g会覆盖pattern space中的原有的数据

1.10 G

G与g都是将hold space中的数据放回pattern space,G是在原有的pattern space原有的数据之后。

1.11 X

参数x表示交换pattern space和hold space中的内容

[address1,[address2]]x
sed -e '1h' -e '3x' input.dat
# 1h--将第一行内容放入hold space
# 3x--当第三行数据出现在pattern space的时候,使用hold space中的数据替换第三行数据
# 也就是用第一行替换第三行

1.12 b、:lable

在sed_script中

.
.
.
编辑命令m1
:记号
编辑命令m2
.
.
.
# 参数与b,在script_file内配合的情况
[address1.[address2]]b[记号]
  • 当sed执行至指令[address1,[address2]]b[记号]时,如果pattern space中的数据复合地址参数,则sed将下一个执行的branch至:记号设定的标记处。也就是由m2......进行执行编辑。
  • b后面没有记号的时候,则sed将下一个执行的指令branch到script_file的最后。

例1

将input.dat文件内数据行的开头字母重复打印40次,假设input.dat文档中的内容如下:

A
B
C
sed -e '{
:pl #:pl与b pl组成了一个循环
/A/s/A/AA/
/B/s/B/BB/
/C/s/C/CC/
/[ABC]\{40\}/b # /[ABC]\{40\}/b 表示循环终止条件
b pl
}' input.dat

最新文章

  1. 总结-eclipse
  2. 用JSON.parse和eval出现的问题
  3. Java连接本地MySQL数据库进行增删改查操作
  4. 在html里添加视频的方法
  5. POJ 3264 Balanced Lineup -- RMQ或线段树
  6. 高通平台 lcd driver 调试小结
  7. 异步加载js
  8. 四则运算<3>
  9. ios ViewController 页面跳转
  10. wifi密码破解-Linux工具篇-video
  11. 推荐一款好用的java反编译软件——JavaDecompiler
  12. Windows 下 Django/python 开发环境配置
  13. JAVA NIO学习四:Path&Paths&Files 学习
  14. mongodb修改和删除操作
  15. Linux 平台 tcpdump 抓包
  16. Python基础知识:模块
  17. 怎样将本地web数据库项目部署到腾讯云服务器上?
  18. 一次ASM磁盘空间假装耗尽 ORA-15041: DISKGROUP SPACE EXHAUSTED
  19. 小技巧 - CSS中:hover调试
  20. gym 101164 H.Pub crawl 凸包

热门文章

  1. 学生管理系统(C语言简单实现)
  2. Android 13 新特性及适配指南
  3. 7.httprunner-pytest风格用例
  4. 二十、Pod的存储之Configmap
  5. 九、Django3的ASGI
  6. 编译安装PHP7.4
  7. vs自定义工程宏
  8. MindStudio模型训练场景精度比对全流程和结果分析
  9. AR Engine光照估计能力,让虚拟物体在现实世界更具真实感
  10. 定制ASP.NET Core的身份认证