shell脚本之sed

sed简介

例子在最下方,大家可以直接拉下去看。

什么是sed

Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上。还可以对原文件改动,但是不会再屏幕上返回结果。

sed的用法

命令

sed [option] ‘[action]’ 文件名 

参数

可选参数解释
-n只打印模式匹配的行
-e直接在命令行模式上进行sed动作编辑,此为默认选项
-f将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作
-r支持扩展表达式
-i直接修改文件内容

操作

sed默认打印所有的内容。

action解释
d删除,删除选择的行
D删除模板块的第一行
s替换指定字符
h拷贝模板块的内容到内存中的缓冲区
H追加模板块的内容到内存中的缓冲区
g获得内存缓冲区的内容,并替代当前模板块中文本
G获得内存缓冲区的内容,并追加到当前模板块文本的后面
l列表不能打印字符的清单
n读取下一个输入行,用下一个命令处理新的行而不是第一个命令
N追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码
p打印模板块的行
P打印模板块的第一行
q退出sed
b label分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾
r file从file中读行
t labelif分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾
T label错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾
w file写并追加模板块到file末尾
W file写并追加模板块的第一行到file末尾
!表示后面的命令对所有没有被选定的行发生作用
=打印当前行号
#把注释扩展到第一个换行符以前

替换

sed -i 's/匹配正则/替换对象/[lable]'

 label

lable说明
g表示行内全面替换
p表示打印行
w表示把行写入一个文件
x表示互换模板块中的文本和缓冲区中的文本
y表示把一个字符翻译为另外的字符(但是不用于正则表达式)
\1子串匹配标记
&已匹配字符串标记

正则

正则说明
^匹配行开始,如:/^sed/匹配所有以sed开头的行。
$匹配行结束,如:/sed$/匹配所有以sed结尾的行。
.匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
*匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
[]匹配一个指定范围内的字符,如/[sS]ed/匹配sed和Sed。
[^]匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
(..)匹配子串,保存匹配的字符,如s/(love)able/\1rs,loveable被替换成lovers。
&保存搜索字符用来替换其他字符,如s/love/&/,love这成love
<匹配单词的开始,如:/<love/匹配包含以love开头的单词的行。
 >匹配单词的结束,如/love>/匹配包含以love结尾的单词的行。
x{m}重复字符x,m次,如:/0{5}/匹配包含5个0的行。
x{m,}重复字符x,至少m次,如:/0{5,}/匹配至少有5个0的行。
x{m,n}重复字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10个0的行。

例子

精准匹配修改

模糊匹配修改

 在sed中使用变量

如果只需要在sed中使用变量需要将'转为"。

例如:

sed -ie "s/rdb.url=.*/$RDB_URL/g" $DECODE_DB_PROP_PATH

这表示将文件中所有以rdb.url=开头的行全部替换为变量RDB_URL的内容。

在这里需要注意:URL中/和&需要加\进行转义。

RDB_URL="rdb.url=jdbc:xugu:\/\/$FIRST_BFDB_HOST:5138\/BABJ_BFDB?ips=$SECOND_BFDB_HOST\&char_set=utf8"

表格部分转载自:https://www.cnblogs.com/A121/p/10621152.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值