一、sed
命令
1.1 概述
文本三剑客之二:sed
sed
是一种流编辑器,按行处理,一次处理一行内容。
操作结果如果只是展示,会放在缓冲区(模式空间),展示结束之后,会从模式空间把操作结果删除。
处理文本时按行处理,处理完当前行,才会处理下一行,直到文件末尾。
1.2 sed
命令
格式1
格式2:
选项:
-e :用于执行多个操作命令
-f :在脚本中定义好了操作符,然后根据脚本内容的操作对文本进行操作
-i :直接修改目标文件(慎用)
-n :仅显示script处理后的结果(不加-n,sed会显示两个输出结果,加了-n,会把默认输出屏蔽)
-r :使用扩展正则表达式
操作符:
p
:打印结果
s
:替换,替换字符串
c
:替换,替换指定行
y
:替换,替换单个字符,多个字符替换必须和替换内容的字符长度保持一致,等量替换
d
:删除,删除行
a
:插入,在指定行的下一行插入内容
i
:插入,在指定行的上一行插入内容
二、sed
的常用用法
2.1 寻址打印
寻址打印:按照指定行来打印(以下都省略要操作文件,只写操作符
2.2 过滤文本
对文本内容进行过滤
使用正则表达式对文本内容进行过滤
使用扩展正则:
例:打印/etc/passwd
要么以root
开头要么以bash
结尾的行
2.3 删除文本
sed
的删除操作
2.4 替换文本
匹配字符串替换
首字母变成大写
\u
:转换下个字母为大写,\
为转义符\U
:转换后面所有字母为大写,直到\L
或\E
为止\l
:转换下个字母为小写,\
为转义符\L
:转换后面所有字母为小写,直到\U
或\E
为止\E
:结束大小写转换&
:&
在sed
中代指前面匹配到的内容
整行替换
单字符替换
注:单字符替换不是字符串替换,上一句的含义是把文件中所有的o换成1,n换成2,e换成3
去掉文件dhcpd.conf
中#ddns-
开头的行的#号
去掉所有被注释行开头的#号
把文件中所有单词的首字母设为大写
2.5 插入文本
2.6 文本互换位置
使用sed对字符串和字符的位置进行互换
用分组的方式对字符串进行互换,分组的默认序号按从左到右为1 2 3 ,在//
指定匹配内容时对内容分组,在后面用\分组序号
的形式指定分组的位置。