[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] sed 如何提取关键字后面的第一对引号中的内容

本帖最后由 随风 于 2011-6-2 13:48 编辑

xxx"abcx"xabc"1"xx"xxx"abc"2"abc"3abc3"xx"x
上行中abc"引号 为关键字,要提取他后面第一对引号中的内容,其中xxx为未知数

需提取的结果为  1 2 3abc3
技术问题请到论坛发帖求助!

菜鸟路过。
期待解答。。

TOP

  1. 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"
复制代码
晚上到家再想一个简单的
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

再补充一点 列子中的 数字,字母有可能是汉字,符号。
技术问题请到论坛发帖求助!

TOP

  1. sed -n "s/abc\x22/\n/g; s/\x22[^\n]*//g; s/[^\n]*//; p"
复制代码

TOP

本帖最后由 batman 于 2011-6-2 21:30 编辑

还是vbs正则方便:
  1. Dim vbstr, rgstr
  2. vbstr = "xxx""abcx""xabc""1""xx""xxx""abc""2""abc""3abc3""xx""x"
  3. Set regex = New RegExp
  4. regex.Global = True
  5. regex.IgnoreCase = True
  6. regex.Pattern = ".*?abc\x22(.*?)\x22"
  7. For Each match In regex.Execute(vbstr)
  8.   rgstr = rgstr & match.Submatches(0)
  9. next
  10. Set regex = Nothing
  11. MsgBox rgstr
复制代码
ps:这个正则可以想取哪段取哪段的,很方便。。。
***共同提高***

TOP

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
技术问题请到论坛发帖求助!

TOP

还是vbs:
  1. Dim vbstr, rgstr
  2. vbstr = "strxxx""abcx""xabc""1""xFFF""A""xxFFFx""xxx""abc""2""xxFFF""B""xxabc""3abc3""xx""x""FFF""C""xxxFFF"
  3. Set regex = New RegExp
  4. regex.Global = True
  5. regex.IgnoreCase = True
  6. regex.Pattern = ".*?abc\x22(.*?)\x22.*?fff\x22(.*?)\x22"
  7. For Each match In regex.Execute(vbstr)
  8.   rgstr = rgstr & match.Submatches(0) & Chr(9) & match.Submatches(1) & vbCrLf
  9. next
  10. Set regex = Nothing
  11. MsgBox rgstr
复制代码
***共同提高***

TOP

返回列表