正则表达式---sed

sed (stream editor 流编辑器)
基本语法:
sed [-n] program [file-list]
sed [-n] –f program-file [file-list]
sed 是一个批处理编辑器。可以对来自文件或者标准输入的输入流进行交换。常被用于管道中的过滤器。sed工具从命令行所指定的文件或者标准输入中获取输入流。除非明确指定输出目标,否则将把结果输出到标准输出。

选项参数
-n (quiet, silent) 安静模式。加上-n后,只有经过sed特殊处理的那一行才会被列出来
-e (script, --expression=script) 直接在指令列模式上进行sed动作编辑
-f (script-file, --file=script-file) 直接将sed的动作写在一个文件内

Sed 动作
-i ([SUFFIX], --in-place[=SUFFIX]) 直接修改读取的文件内容,而不是由屏幕输出
-r (regexp-extended) sed的动作支持的是延伸型正则表示法的语法。(预设是基础正则表示法语法)

动作说明:[n1, [n2]]function
n1, n2: 不一定存在,表示选择进行动作
a (append) 新增,a 的后面可以接字符串,而这些字符串会在新的一行出现(当前行的系一行)
c (change,replace) 取代,c后面的接字符串,讲匹配的行替换为c后接的字符串
d (delete) 删除
i (Insert) 插入, i的后面接字符串,而这些字符串会在新的一行出现(当前行的上一行)
p (print) 打印,将某个选择的数据打印。通常p会与参数sed –n一起运行
s (substitution) 取代,可以直接进行取代的工作。通常的搭配是:s/old/new/g
w (write) 将匹配的内容写入另外一个文件中
h/H 将 pattern space 拷贝到 hold space
g/G 将 hold space拷贝到 pattern space

1)打印含有student的行
正则表达式---sed_第1张图片

-n 和 p 一起使用表示只打印发生匹配的行

打印指定的行

打印从第6行开始到含有第一个含有stu结束的行

打印从第8行到最后行
正则表达式---sed_第2张图片

2)插入某些内容
正则表达式---sed_第3张图片

以上是在含有Deve的行后加上(append) teste

正则表达式---sed_第4张图片

以上是在含有Deve的行前加上(Insert) teste

正则表达式---sed_第5张图片

以上为将汉以后deve的整行替换为teset

3)行内的内容替换

加上-i选项之后文件中的内容被改变
正则表达式---sed_第6张图片

4) 删除匹配的行
正则表达式---sed_第7张图片

以上分别是
A. 删除指定的第二行到含有good的行,讲剩余行打印出来
B. 删除第2行到第6行
C. 删除含有good的行

5) 将匹配的行写入另一文件
正则表达式---sed_第8张图片

6) 读取文件中的命令
正则表达式---sed_第9张图片

7) 交换两个几个单词的位置

以上使用()来表示对应的匹配项, 最多匹配到9项。

8)&符号表示替换字符串中被找到的部分
正则表达式---sed_第10张图片

9)s-替换 后面的字符可以被认为是新的命令分隔符,代替”/”,但是分隔符一定是s后面的字符
正则表达式---sed_第11张图片

10)逗号表示选定行的范围

以上打印从含有You的行开始到含有Plan的行之间的行,无论Plan出现在哪儿,之间的行都被打印,如果Plan没出现,中间的行都将被打印
以上是打印从第3行到含有Plan的行之间的行,如果Plan没出现,中间的行都将被打印


以上是打印从第3行到含有Plan的行之间的行,如果Plan没出现,中间的行都将被打印

以下部分将You到Plan的行中间含有的better替换为best,并将影响到的行打印出来
正则表达式---sed_第12张图片

11)-e 多点编辑
正则表达式---sed_第13张图片

以上都是将第1行到第6行删掉,然后将剩余的good替换为better。 第二个示例中是再将Dev替换为def

你可能感兴趣的:(正则表达式---sed)