标题: [问题求助] gawk如何提取指定字符之间的字符串 [打印本页]
作者: FOR 时间: 2011-11-1 21:02 标题: gawk如何提取指定字符之间的字符串
gawk如何提取指定字符之间的字符串
如何提取ab和cd之间的字符串
a.txt
abdifdfajfidf
afieeacdefe
efabifadficdiefjeie
abidfeiecd
abdifieeidcdiefie
faifejeia
如上,蓝色字体为需要提取的字符串
作者: awk 时间: 2011-11-1 21:56
- sed -r "/ab.*cd/!d; s/.*ab(.*)cd.*/\1/" a.txt
复制代码
作者: FOR 时间: 2011-11-1 22:51
本帖最后由 FOR 于 2011-11-1 22:54 编辑
回复 2# awk
题意没有说清楚,这个 sed 有贪婪性
比如
ab1234cd0000cd
我需要的是ab至第一个cd之间的内容即1234而不是1234cd0000
还有如果一行中有多个ab。。。cd 。。。能把内容都提取出来吗?
比如 ab1234cd000ab2222cd99999ab8888
提取
1234
2222
后面 ab 后面的8888不要,因为没有cd结尾。
作者: sxw 时间: 2011-11-1 23:21
用sed正则很好实现啊
作者: awk 时间: 2011-11-1 23:35
回复 3# FOR - sed "s/cd/@\n/g" a.txt | sed "/ab.*@$/!d; s/.*ab//; s/@$//"
复制代码
根据实际情况把@设置成文件中不会出现的字符
作者: dn833 时间: 2011-11-15 17:03
awk -F ab '/ab.*cd/{gsub(/cd.*/,"");print $NF}'
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |