sed如何匹配特殊符号%,<,/>
时间:2011-05-06
来源:互联网
在solaris系统中,要筛选数组中关键字,每个关键字后面都有一个%如果能够在sed中匹配上
grep -i "C${CV[$i]}" | eval "sed 's/.*"C\${CV[$i]}%"//g'"
CV是个数组
i 是变量
grep -i "C${CV[$i]}" | eval "sed 's/.*"C\${CV[$i]}%"//g'"
CV是个数组
i 是变量
作者: situxiaoquan1 发布时间: 2011-05-06
楼主要干嘛呢?匹配 % < > 这些字符吗?
可以直接匹配啊,
还是我没有理解楼主的意思?
复制代码
如果要匹配 / 的话,转义一下就可以,或者用sed 's###'也可以
可以直接匹配啊,
还是我没有理解楼主的意思?
- [root@bill test2]# echo "% < >"|sed 's/%/1/;s/</2/;s/>/3/'
- 1 2 3
作者: dzhxc 发布时间: 2011-05-06
回复 dzhxc
不好意思没说清楚,如果单独用sed命令是可以的,我的问题是把这样的命令放到脚本里,把sed中的关键字设置成变量后,就无法筛选出来了。
问题:我怀疑在脚本中一些特殊字符是不是不支持特别是<和>,使用\转译也不好用。
不好意思没说清楚,如果单独用sed命令是可以的,我的问题是把这样的命令放到脚本里,把sed中的关键字设置成变量后,就无法筛选出来了。
问题:我怀疑在脚本中一些特殊字符是不是不支持特别是<和>,使用\转译也不好用。
作者: situxiaoquan1 发布时间: 2011-05-06
楼主是这个意思吧?
复制代码
- [root@localhost /test]# a=xxx
- [root@localhost /test]# echo abc | sed 's/b/'$a'/'
- axxxc
作者: zooyo 发布时间: 2011-05-06
这样?
复制代码
- [root@bill cu]# cat a2.sh
- #!/bin/bash
- echo "% < >"|sed "s/$1/1/g;s/$2/2/;s/$3/3/"
- [root@bill cu]# sh a2.sh % \< \>
- 1 2 3
作者: dzhxc 发布时间: 2011-05-06
本帖最后由 situxiaoquan1 于 2011-05-06 18:53 编辑
回复 dzhxc
文件内容file.txt:
<OrigDomain>PIMM</OrigDomain> <HomeDomain>BOSS</HomeDomain> <BIPCode>BIP2B110</BIPCode> <BIPVer>0100</BIPVer> <ActivityCode>T2001122</ActivityCode> <ActionCode>0</ActionCode> <Routing> <RouteType>01</RouteType> <RouteValue>13421322072</RouteValue> </Routing> <ProcID>204070351</ProcID> <TransIDO>570117902</TransIDO> <ProcessTime>20110327141005</ProcessTime> <TestFlag>0</TestFlag> <MsgSender>0005</MsgSender> <MsgReceiver>0000</MsgReceiver> <SvcContVer>0100</SvcContVer>
在以上文件中帅选出类似<OrigDomain></OrigDomain> 和<HomeDomain></HomeDomain>之间的内容,把每个字段当作变量$i
脚本类似
#!/bin/bash
......
......
cat file.txt |grep "<$i>" |sed 's/.*<$i>//g'|awk -F'<' '{print $1}'
单独执行以下
grep "<BIPCode>" bosslog.txt | sed 's/.*<BIPCode>//g'|awk -F'<' '{print $1}'
结果:
BIP2B110
执行脚本时无法识别>和<,使用\将其注释也无法帅选<BIPCode> ,如何能够匹配尖括号呢?
我是在solaris系统下运行的
回复 dzhxc
文件内容file.txt:
<OrigDomain>PIMM</OrigDomain> <HomeDomain>BOSS</HomeDomain> <BIPCode>BIP2B110</BIPCode> <BIPVer>0100</BIPVer> <ActivityCode>T2001122</ActivityCode> <ActionCode>0</ActionCode> <Routing> <RouteType>01</RouteType> <RouteValue>13421322072</RouteValue> </Routing> <ProcID>204070351</ProcID> <TransIDO>570117902</TransIDO> <ProcessTime>20110327141005</ProcessTime> <TestFlag>0</TestFlag> <MsgSender>0005</MsgSender> <MsgReceiver>0000</MsgReceiver> <SvcContVer>0100</SvcContVer>
在以上文件中帅选出类似<OrigDomain></OrigDomain> 和<HomeDomain></HomeDomain>之间的内容,把每个字段当作变量$i
脚本类似
#!/bin/bash
......
......
cat file.txt |grep "<$i>" |sed 's/.*<$i>//g'|awk -F'<' '{print $1}'
单独执行以下
grep "<BIPCode>" bosslog.txt | sed 's/.*<BIPCode>//g'|awk -F'<' '{print $1}'
结果:
BIP2B110
执行脚本时无法识别>和<,使用\将其注释也无法帅选<BIPCode> ,如何能够匹配尖括号呢?
我是在solaris系统下运行的
作者: situxiaoquan1 发布时间: 2011-05-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28