sed 指令替换用法

先看一个使用sed 替换的脚本:

#!/bin/bash

#特殊符号解析
#将json中特殊符号替换为空格,删除,或者<>符号,或者添加换行符
sed "s/<\/span>&nbsp;/ /g" -i source_json.txt
sed "s/&nbsp;/ /g" -i source_json.txt
sed "s/<\/span><\/span>/ /g" -i source_json.txt
sed "s/<\/span>//g" -i source_json.txt
sed "s/&quot;/\"/g" -i source_json.txt
sed "s/&lt;/</g" -i source_json.txt
sed "s/&gt;/>/g" -i source_json.txt
sed "s/&amp;/\&/g" -i source_json.txt

#换行
#在特定位置添加换行符
sed "s/{\"level\":[0-9]\+,\"eventTreeLabel\"/\n&/g" -i source_json.txt
sed "s/\"level\":[0-9]\+,\"eventTreeLabel\":\"[0-9.]\+\",//g" -i source_json.txt
sed "s/\"lineNumber\":[0-9]\+}],/&\n/g" -i source_json.txt

sed "s/\"id\":\"[0-9]\+-[0-9]\+\",//g" -i source_json.txt


#特定字符串的删除
sed -i '/name/d' source_json.txt


#换指定的警告或者报错类型
sed "s/\"tag\":\"[a-z_-]\+\",//g" -i source_json.txt

sed "s/\"[a-zA-Z]\+Ids\":\[\"[0-9-]\+\",\"[0-9-]\+\"\],//g" -i source_json.txt

sed指令的替换

转义字符 \

需要转义的字符  '  "  $  ^  \  [   ]   等,转义字符 \ 如果需要转义,前面需要添加  \   

正则表达式:

参数

-i 参数:   -i 参数放在表达式前面,或者表达式后面都行,均能对文本操作

$sed "s/zhangsan/lisi/g" source_json.txt      #没有参数 i  仅仅改变显示

$sed "s/zhangsan/lisi/g" -i source_json.txt   #使用参数 i 会实际改变文本

$sed "s/&lt;/</g" -i source_json.txt    #将匹配到的 &lt;  替换为 <

$sed "s/&gt;/>/g" -i source_json.txt    #将匹配到的  &gt; 替换为 >

&参数:

这个参数是指的是:前面已经匹配到字符串

#  &  代表的就是 "s/&amp;/"    这里匹配到的  &amp;
$sed "s/&amp;/\&/g" -i source_json.txt

这条指令的意思就是在 &amp; 这个特定字符前面添加一个 \  字符

#在匹配到的 {"level":[0-9]\+,"eventTreeLabel"  去掉了转义字符 \  在匹配的字符串前面添加换行
$sed "s/{\"level\":[0-9]\+,\"eventTreeLabel\"/\n&/g" -i source_json.txt

#在匹配的字符串前面添加换行符
$sed "s/\"lineNumber\":[0-9]\+}],/&\n/g" -i source_json.txt

正则表达式使用:

#正则表达式 [a-z_]\+ 表示从a-z的全部字符,并且包含下划线 _ 这个集合中的一个或多个,
#全部替换为空格
$sed "s/\"tag\":\"[a-z_-]\+\",//g" -i source_json.txt


# & 是匹配到的字符串的代指,"lineNumber":XXX}],
# XXX表示的是多个数字,[0-9]\+  是正则表达式,表示在0-9范围内的一个或者多个数字,
# 最后替换的 &\n 表示在匹配到的字符串后面添加换行
$sed "s/\"lineNumber\":[0-9]\+}],/&\n/g" -i source_json.txt

特定字符串删除:  (注意这里是单引号,-i参数的位置放在表达式前面,或者后面都可以)

#特定字符串的删除,将特定匹配到的字符串删除
sed -i '/name/d' source_json.txt

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值