1、sed (Stream SDite)
作为行编辑器,对文本进行编辑(以行为单位进行编辑)
注意:sed编辑文件,却不改变原文件;
(1)sed的工作原理:
指定一个文本文件,一次读取文本文件中每行的内容,读取到模式空间中的(PATTERN SPACE),在模式空间中进行文本匹配,(正则表达式)对匹配后的内容进行修改(替换、删出、打印、修改、保存等)
(2)常见选项:
-n
-r 指定使用扩展的正则表达式
匹配IP
1、所有的 \ 都不要
2、| ----> 或者
-e script
-f 指定脚本文件
-l 指定文本换行的长度?
-i 直接修改文件内容(不建议使用)
(3)地址定界
1、直接匹配数值
sed -n ‘5,7p‘ 文件 ?
2、d(数字)~步长
sed -n ‘1~3p‘ 文件
3、$ 指定行尾
sed -n ‘10,$p‘ 文件
4、/正则/
/正则1/,/正则2/
sed -n ‘/fd/,$p‘ 文件 //fd是文件某一行的内容
5、0,addr
addr可以为数字/$/正则表达式
sed -n ‘0./k\{5,\}/p‘ 文件
6、addr,+N
匹配addr行到addr后N行
sed -n ‘/fd/,+5p‘ 文件
7、addr,-N
(4)、常见命令
p print 打印(默认在屏幕上显示出来)建议和 -n 一起使用
c 替换行
sed "/aaa/c \A“ 文件
d 删除
sed ”1,3d“文件
sed ”/aaa/d“ 文件
n N 读取/添加 模式匹配到的行的下一行内容,在对其进行操作
w 保存
sed "/pattern/w 新的文件名" 原来的文件名
s 文本内容替换
语法格式:s/pattern/字符串/
扩展:中间的 / 可以替换成任意一个字符,例如:s### s@@@ s%%%
g 全部匹配
sed "s#k#K#gw /root/text.txt" 文件 //把全部小k替换成大K,然后保存到/root/text.txt
/1 /2 和正则表达式的分组相同,实现相反应用
原文:https://www.cnblogs.com/wx00/p/11362805.html