_sed命令

三大文本处理工具:grep,sed(流编辑器),awk(报告文本生成器)

sed基本用法:sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

sed:Stream EDitor

用来操作纯ASCII码的文本,逐行编辑

行编辑器

逐行读取到内存空间,在内存中做处理然后显示到屏幕上来

这段内存空间称模式空间,sed按行处理,不一定每一行都会读取到内存中去,符合条件的读进模式空间做模式条件匹配,如果被条件匹配到了,在模式空间中使用后面的编辑命令对其完成编辑并且将编辑的结果输出到屏幕上来。

默认不编辑原文件,仅对模式空间中的数据做处理;而后,处理结束后,将模式空间打印至屏幕

sed [options] ‘AddressCommand‘ file ...

-n:静默模式,不再默认显示模式空间中的内容

-i:直接修改原文件

-e SCRIPT -e SCRIPT:可以同时执行多个脚本

-f  /PATH/TO/SED_SCRIPT

sed -f /path/to/scripts file

-r:使用扩展正则表达式

Address:

1、StartLine,Endline

eg1,100从第1行到第100行

$:最后一行

$-1:倒数第二行

2、使用模式

/RegExp

/^root/:找以root开头的行

3、/pattern1/,/pattern2/

第一次被模式1匹配到的行开始到第一次被模式2匹配到的行结束,这中间的所有行

4、LineNumber

指定的行

5、StartLine,*N

从StartLine开始,向后的N行

Command:

d:删除符合条件的行,这样被匹配到的就不显示,匹配到的才显示

!注:因为sed默认不编辑原文件,所以删除符合条件的行,原文件中的行是没有被删掉的,删掉的只是模式空间中符合条件的行,然后将模式空间打印至屏幕

p:显示符合条件的行

在此可以发现,符合条件——开头是/的行显示了两次,为什么?

模式空间显示一次,p命令显示一次。

那么怎么只打印符合条件的行呢?

加-n选项,不再显示模式空间中的内容

a \string:在指定的行后面追加新行,内容为string

i \string:在指定的行前面添加新行,内容为string

r  FILE:将指定的文件的内容添加到符合条件的行处

w  FILE:将指定范围内的内容另存至指定的文件中

s/pattern/string/修饰符:查找并替换,默认只替换每行中第一次被模式匹配到的字符串

加修饰符

g:全局替换

i:忽略字符大小写

s///:s###,s000

\(\), \1, \2               !

l..e:like-->liker

love-->lover

like-->Like

love-->Love

&:引用模式匹配整个串

时间: 2024-10-24 09:50:56

_sed命令的相关文章

Zsh安装CMake补全脚本进行CMake命令补全

最近在尝试使用Zsh,发现其补全命令的功能相当厉害.但对CMake命令的补全在默认的5.0.5中好像没有看到,网上找了下关于配置Zsh补全的文章也没有多少.     于是自己动手,发现在Zsh安装目录下有个functions的文件夹,里面都有以_开头的各种补全提示文件,比如_sed,_awk等,于是尝试在网上 下到zsh_cmake补全文件之后,重命名为_cmake放置该文件夹中(注意Windows用户的换行符,在这个上浪费了很多时间,使用 dos2unix可以解决)重新启动Zsh,享受CMak

linux常用命令--netstat

简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接等等. 常用参数 -a (all)显示所有选项,提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字.-l 仅列出有在 Listen (监听) 的服務状态 -p 显示建立相关链接的程序名-r 显示路由信息,路由

使用fruitstrap实现命令行将IPA包安装到iOS设备上

Requirements Mac OS X. Tested on Snow Leopard only. You need to have a valid iPhone development certificate installed. Xcode must be installed, along with the SDK for your iOS version. Usage fruitstrap [-d] -b <app> [device_id] Optional -d flag laun

Linux基础命令小结

注意:Linux严格区分大小写 老男孩方法论经验之谈: 有一种方法叫做没方法 有两种方法,左右为难 有三种方法才叫有方法 停止一个命令:CTR + C 1.创建目录 英文:make directorys 命令:mkdir 实例:三种方式 mkdir /data cd / mkdir data cd /;mkdir data mkdir x y z    表示同时创建多个目录 mkdir -p /data/x/y   表示同时创建多级目录(递归创建),切记不可用mkdir /data/x/y 2.

10.6 监控io性能 - 10.7 free命令 - 10.8 ps命令 - 10.9 查看网络状态 - 10.10 linux下抓包

- 10.6 监控io性能 - 10.7 free命令 - 10.8 ps命令 - 10.9 查看网络状态 - 10.10 linux下抓包 - 扩展tcp三次握手四次挥手 http://www.doc88.com/p-9913773324388.html  - tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html  # 10.6 监控io性能 ![mark](http://oqxf7c508.bkt.clouddn.com/b

uboot下的命令使用示例

1.usb 可以使用此命令读取u盘里的内容,此命令加上相关参数可以有以下功能: 1.1usb start 在使用u盘之前必须启动此命令以初始化好fat文件系统环境,笔者的输出如下: jello # usb start(Re)start USB...USB:   Starting the controllerscanning bus for devices... 5 USB Device(s) found       scanning bus for storage devices... usb_

reset master和reset slave命令解析和区别

reset master删除所有index file 中记录的所有binlog 文件,将日志索引文件清空,创建一个新的日志文件,这个命令通常仅仅用于第一次用于搭建主从关系的时的主库, 注意: reset master 不同于purge binary log的两处地方1.reset master 将删除日志索引文件中记录的所有binlog文件,创建一个新的日志文件 起始值从000001 开始,然而purge binary log 命令并不会修改记录binlog的顺序的数值2.reset maste

【Windows10&nbsp;IoT开发系列】Powershell命令行实用程序

原文:[Windows10 IoT开发系列]Powershell命令行实用程序 更新帐户密码: 强烈建议你更新默认的管理员帐户密码.若要更新帐户密码,你可以发出以下命令: net user Administrator [new password]​ (其中 [new password] 表示你选择的强密码). 创建本地用户帐户: 如果你想要授予其他人访问你的 Windows IoT Core 设备的权限,你可以通过在 net user [username] [password] /add​ 中键

windows下cmd命令行显示UTF8字符设置(CHCP命令)

在中文windows系统中,如果一个文本文件是utf-8编码的,那么在cmd.exe命令行窗口(所谓的dos窗口)中不能正确显示文件中的内容.在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集. 如果想正确显示UTF-8字符,可以按照以下步骤操作: 1.打开CMD.exe命令行窗口 2.通过 chcp命令改变代码页,UTF-8的代码页为65001 1 chcp 65001 执行该操作后,代码页就被变成UTF-8了.但是,在窗口中仍旧不能正确显示UTF-8字符