You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
$ cat data
one
two
$ echo -e "one\ntwo\nthree\nfour"| sed "3r data"
one
two
three
one
two
four
可以和删除命令一起使用来用另一个文件的数据替换文件中的占位文本。
$ cat data
Would the following people:
LIST
please report to the office
$ sed '/LIST/{r listd}' data
Would the following people:
Zhangyachen
please report to the office
记录下sed编译器的常见使用方法。
sed编辑器基于输入到命令行的或者是存储在文本文件中的命令来处理数据流中的数据。每次从输入中读取一行,用编辑器命令匹配数据,修改数据,输出到STDOUT。在流编辑器将所有命令与一行数据匹配之后,它会读取下一行数据并重复此过程。
替换
关于flags:
其中:-n和p一起使用,只会输出被substitute命令修改过的行
使用地址
默认,sed使用的命令会作用于所有行,使用行寻址使命令作用于特定的行。
两种方式:
或者
数字方式
文本模式
pattern
可以为正则表达式。组合命令
或者:
删除行
上面的两种方法均适用。
使用两个文本模式删除某个范围内的行
插入和附加文本
修改行
使用区间:
sed会用这一行文本替换这两行,而不是逐一修改。
转换命令
转换命令是唯一可以处理单个字符的sed编辑器命令。
将inchars和outchars进行一对一映射,如果长度不同,会产生一条错误消息。
转换命令是全局命令,会自动替换文本行中找到的指定字符的所有实例。
回顾打印
打印行
同时显示原来的和新的行文本。
打印行号
列出行
l允许打印数据流中的文本和不可打印的ASCI字符。任何不可打印的字符都用他们的八进制前加一个反斜线或者标准C命名法。
sed和文件一起工作
向文件写入
从文件读取数据
不能对读取命令使用地址区间,而只能使用单独一个行号或者文本模式地址,sed会将文件中的文本插入到地址之后。
可以和删除命令一起使用来用另一个文件的数据替换文件中的占位文本。
保持空间
模式空间是一块活动缓冲区,在sed编译器执行命令时它会保存sed编译器要检验的文本。
sed编辑器还利用了另一块缓冲区域,称作保持空间。你可以在处理模式空间中其他行是用保持空间来临时保存一些行。
next命令
单行next命令
小写的n命令会告诉sed编辑器移动到数据流中的下一文本行,而不用重新回到命令的最开始再执行一遍。
删除第一行之后的空白。
合并文本行
多行版本的next命令N会将下一文本加到已在模式空间中的文本上。将两个文本行合并到同一模式空间,文本行仍然用换行符分隔,但是sed编辑器现在会将两行文本当做一行来处理。
待续。。。
The text was updated successfully, but these errors were encountered: