1、什么是SED?
答:SED全称是:Stream EDitor 流式编辑器,它的特点就是可以逐行处理文件,也可以非交互式修改文本文件;
例如:
寻找luo.txt这个文件中的带有root字符的行;
sed -n '/root/p' /luo.txt
译为:运用sed流式编辑器查找luo.txt这个文本文件中带有root字符的行,并输出;
它会把整个文件都找一遍,然后帮你输出到屏幕上;
2、sed常用的使用方式由哪些?
答:sed常用的使用方式由两种:
a、sed 选项 ‘定址符和指令’ 目标文件;(定址符指的是在文本文件中的第几行或第几个字符,需要加单引号)
b、前置置命令 | sed 选项 "定址符和指令"
3、sed常用的选项由哪些?
答:sed常用的选项有:-n -r -i p
-n 指的是屏蔽默认输出,如果不加-n,sed自己本身会输出一边内容,加上你的指令,如此就是输出了两遍,所以要加-n;
-i 指的是将修改后的结果保存到文件;
比如:
sed -n -i '/root/p' /luo.txt
译为:运用sed流式编辑器修改并保存luo.txt这个文本文件中带root字符的行;
最后的结果就是除带root字符的行外,其余内容全部删除;
-r 指的是使用扩展正则;
例如:sed -rn '/要查找的字符{字符的个数,}/p'
p 指的是输出查看相应内容;
d 指的是删除;
= 指的是运用sed显示文本文件答行号
s 指的是替换,g指的是所有,格式需要用///或者###;
格式如下:
sed 's/ 旧内容 / 新内容 /' 目标文件
为防止冲突:@@@、!!!、$$$、%%%、&&&、***、(((、)))都可以用;
4、实用案例;
案例1:
请运用sed流式编辑器和正则表达式来实现luo.txt这个文件的第一个字符与最后一个字符的替换;
解:操作如下:
sed -r 's/^(.)(.*)(.)$/\3\2\1/' luo.txt
译为:运用sed流式编辑器将luo.txt这个文本文件里的内容的第一个字符与最后一个字符进行替换;
其中:
s —— 在sed中表示替换的意思,是sed工具中常用的选项之一;没有加位置符表示所有,如是1s,表示第一行;
^(.) —— 这是正则表达式中的符号,^译为开头的第一个字符;()—— 在拓展正则式中译为保留的意思;
. —— 在正则表达式中译为任意字符的意思;
^(.) —— 合在一起译为:保留文本文件中的第一个字符,不管这个字符是什么,都保留,哪怕是空格;
(.*) —— *号表示的是前一个字符在文本中出现的任意次数;(.*)结合起来译为:保留任意字符出现的任意次数,就是不管它是什么字符,不管它出现了几次,都保留下来;
(.)$ —— $在正则表达式中译为匹配行尾;(.)$结合为起来译为保留尾部的任意字符;
\3\2\1 —— 在sed中译为由原来的1、2、3排序,重新编排为3、2、1;
-r —— 指的是在sed流式编辑器中的一个选项,主要用于搭配扩展正则式使用;
案例2:
请运用sed和正则表达式将luo.txt文本文件中所有的数字全部删除;
解:命令如下:
sed 's / [ 0-9 ] / / ' luo.txt
译为:[ 0-9 ] 这是一个集合,在正则表达式中译为0-9的数字;
/ / 在sed流式编辑器中译为空,斜杆中间没有写任何东西;
s是sed流式编辑器中的一个常用选项之一,主要用于替换字符或者删除字符;
案例3:
请运用sed流式编辑器工具和正则表达式,将luo.txt文本文件中行首空格和数字全部删除,且把所有大写字母用[ ]括起来;
解:命令格式如下:
sed -r -i 's/ ^( )+ / /g ; s/ [ 0-9 ] / / ; s/( [ A-Z ] )/ [ \1 ] /g ' luo.tx
译为:
[ 0-9 ] 和 [ A-Z ] 在正则表达式中译为0-9的数字集合和A-Z的大写字母的集合;
/g 在sed流式编辑器中指的式所有的意思;
-i 是sed流式编辑器中的选项之一,指的是保存修改后的文件;
() 在扩展正则表达式中指的式保留的意思;
以上........
祝;开心!
罗贵
2019-03-11于深圳