1. 替换一行字符串。
<title name= > <param name="root", value="haha"/> <param name="root", value="haha"/> <title name= > <param name="root", value="haha"/> <param name="root", value="haha"/>
替换第5行的内容为"<para name ="root", value="magnum"/>"
shell脚本如下:
#!/bin/bash
path=$
head=' <param name="root" value="'
tail='"/>'
rosPath="$head$path$tail"
echo "ros new Path: $rosPath"
sed -in "5s:.*:$rosPath:g" demo_offline.launch
1. 截取[]里面的内容
tt="I am good student."
echo $tt | sed 's@^.*am \([a-z].*\) stu.*$@\1@g'
输出"good"
□ : 表示空格
a)^.*am□ //这句的意思是以任意字符开头到am□为止,匹配文件中的“I am□”字符串
b)\([a-z].*\)□ //这句的外壳就是括号\(\),里面的[a-z]表示匹配26个字母的任何一个,[a-z].* 合起来就是匹配任意多个字符,本题来说就是匹配good字符串,由于good字符串是需要保留的,因此用括号括起来匹配,后面通过\1来取good字符串。
c)□stu.*$ //表示以空格tea起始任意字符结尾,实际就是匹配good字符串后,紧接着的字符串“□student.”。
d)后面被替换的内容中的\1就是取前面的括号里的内容了,也就是我们要的good字符串。
tt2="imu index[1111], q{0-3}, haha,haha"
echo $tt2 | sed 's/^.*mu index\[\([0-9].*\)\], g.*s/\1/g'
输出"1111"