标题: [问题求助] sed 如何提取关键字后面的第一对引号中的内容 [打印本页]
作者: 随风 时间: 2011-6-2 13:42 标题: sed 如何提取关键字后面的第一对引号中的内容
本帖最后由 随风 于 2011-6-2 13:48 编辑
xxx"abcx"xabc"1"xx"xxx"abc"2"abc"3abc3"xx"x
上行中abc"引号 为关键字,要提取他后面第一对引号中的内容,其中xxx为未知数
需提取的结果为 1 2 3abc3
作者: plp626 时间: 2011-6-2 19:38
菜鸟路过。
期待解答。。
作者: Batcher 时间: 2011-6-2 20:01
- sed "s/\(abc\"[0-9a-z]*\"\)/\n\1\n/g" 1.txt | sed -n "/abc\"[0-9a-z]*\"/ s/.*\"\(.*\)\"/\1/p" | sed ":a;N;$!ba;s/\n/ /g"
复制代码
晚上到家再想一个简单的
作者: 随风 时间: 2011-6-2 20:30
再补充一点 列子中的 数字,字母有可能是汉字,符号。
作者: tmplinshi 时间: 2011-6-2 20:35
- sed -n "s/abc\x22/\n/g; s/\x22[^\n]*//g; s/[^\n]*//; p"
复制代码
作者: batman 时间: 2011-6-2 21:23
本帖最后由 batman 于 2011-6-2 21:30 编辑
还是vbs正则方便:- Dim vbstr, rgstr
- vbstr = "xxx""abcx""xabc""1""xx""xxx""abc""2""abc""3abc3""xx""x"
- Set regex = New RegExp
- regex.Global = True
- regex.IgnoreCase = True
- regex.Pattern = ".*?abc\x22(.*?)\x22"
- For Each match In regex.Execute(vbstr)
- rgstr = rgstr & match.Submatches(0)
- next
- Set regex = Nothing
- MsgBox rgstr
复制代码
ps:这个正则可以想取哪段取哪段的,很方便。。。
作者: 随风 时间: 2011-6-2 21:35
5# tmplinshi
strxxx"abcx"xabc"1"xFFF"A"xxFFFx"xxx"abc"2"xxFFF"B"xxabc"3abc3"xx"x"FFF"C"xxxFFF
太美丽了,很巧妙的方法,学习了.
增加难度
上面行 FFF" 为新的关键字
要求显示如下
1 A
2 B
3abc3 C
作者: batman 时间: 2011-6-2 21:48
还是vbs:- Dim vbstr, rgstr
- vbstr = "strxxx""abcx""xabc""1""xFFF""A""xxFFFx""xxx""abc""2""xxFFF""B""xxabc""3abc3""xx""x""FFF""C""xxxFFF"
- Set regex = New RegExp
- regex.Global = True
- regex.IgnoreCase = True
- regex.Pattern = ".*?abc\x22(.*?)\x22.*?fff\x22(.*?)\x22"
- For Each match In regex.Execute(vbstr)
- rgstr = rgstr & match.Submatches(0) & Chr(9) & match.Submatches(1) & vbCrLf
- next
- Set regex = Nothing
- MsgBox rgstr
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |