Shell-08-文本处理sed




文本处理sed

sed:流编辑器,过滤和替换文本

工作原理:sed命令将当前处理的行读入模式空间进行处理,处理完把结果输出,并且清空模式空间。
然后再将下一行读入模式空间进行处理输出,以此类推,直到最后一行

常用参数

image-20210813140747621

image-20210813140839185

image-20210813140856324

image-20210813140911460


示例

依据以下文本内容作为示例

image-20210813141010403


匹配打印(p)

1 打印匹配blp5开头的行

image-20210813141113432


2 打印第一行

image-20210813141142075


3 打印1~3行

image-20210813141213303


4 打印奇数行和偶数行

image-20210813141251006


5 打印匹配行以及后一行

image-20210813141330959


6 打印最后一行 单引号会忽略特殊字符

image-20210813141421245


7 不打印最后一行 感叹号是对后面的命令取反

image-20210813141454307


8 匹配范围

范围模式匹配,下一个匹配到第一个就不匹配了

image-20210813141524133

匹配开头到最后一行

image-20210813141542930


9 引用系统变量,用引号

image-20210813141606957


总结:
  sed命令用单引号时,里面变量用单引号引起来,或者sed命令用双引号,因为双引号解释特殊符号原有意义


匹配删除(d)

1 删除匹配到bpl5字符的行

image-20210813141810849


2 删除第一行

image-20210813141839086


3 删除奇数行

image-20210813141905393


4 删除第1行到第3行

image-20210813141936155


5 去除空行 或 # 开头的 行

image-20210813141959768



替换(s///)

1 blpt字符串替换为test

image-20210813142056918

全局替换加 g

image-20210813142118424


2 替换 blp5字符串 并打印

image-20210813142138861


3 使用 & 命令引用匹配类容并且替换

image-20210813142159390


4 IP加引号

image-20210813142219135


5 对1-5行的 blp5 进行替换

image-20210813142241172


6 对匹配的行进行替换

image-20210813142301338


7 二次匹配替换

image-20210813142323995


8 分组使用

image-20210813142342885

第一列,第二列 是第一个小括号匹配,第3列是第2个小括号匹配

再通过 \数字 按分组顺序调用即可

image-20210813142400497


9 将协议与端口号位置调换

image-20210813142421539


10 去除开头和结尾空格或制表符

image-20210813142442737



多重编辑(e)

可以使用-e参数,也可以使用分号分隔

image-20210813142908372



添加新类容(a、i、c)

1 在blp5上一行添加新类容

image-20210813142943396


2 在blp5下一行添加新类容

image-20210813143005608


3 将blp5 替换新行

image-20210813143024988


4 在指定行{下一行|上一行}添加一行

image-20210813143047540



读取文件并追加到匹配行后(r)

image-20210813143129076



将匹配行写到文件(w)

image-20210813143150381



读取下一行(n和N)

n 读取 下一行 到模式空间
N 追加 下一行 内容到模式空间,并且以换行符 \n 分割

1 打印匹配的下一行

image-20210813143237953


2 打印偶数

image-20210813143256204

sed 先读取第一行 1 ,执行 n 命令,获取下一行2,此时模式空间是 2  ,执行p打印命令,打印模式空间。
现在模式空间是2 ,sed 再读取3,执行 n 命令,获取下一行4 ,此时模式空间是4 ,执行p命令打印。以此类推!

3 删除偶数行

image-20210813143327006



忽略大小写匹配(I )

image-20210813143414084



获取总行数(#)

image-20210813143435289


posted @ 2021-08-13 14:37  李成果  阅读(63)  评论(0编辑  收藏  举报