找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24284|回复: 5

[问题求助] gawk如何提取指定字符之间的字符串

[复制链接]
发表于 2011-11-1 21:02:43 | 显示全部楼层 |阅读模式
gawk如何提取指定字符之间的字符串
如何提取ab和cd之间的字符串
a.txt
abdifdfajfidf
afieeacdefe
efabifadficdiefjeie
abidfeiecd
abdifieeidcdiefie
faifejeia
如上,蓝色字体为需要提取的字符串
发表于 2011-11-1 21:56:02 | 显示全部楼层
  1. sed -r "/ab.*cd/!d; s/.*ab(.*)cd.*/\1/" a.txt
复制代码
 楼主| 发表于 2011-11-1 22:51:34 | 显示全部楼层
本帖最后由 FOR 于 2011-11-1 22:54 编辑

回复 2# awk


题意没有说清楚,这个 sed 有贪婪性
比如
ab1234cd0000cd
我需要的是ab至第一个cd之间的内容即1234而不是1234cd0000
还有如果一行中有多个ab。。。cd 。。。能把内容都提取出来吗?
比如 ab1234cd000ab2222cd99999ab8888
提取
1234
2222
后面 ab 后面的8888不要,因为没有cd结尾。
发表于 2011-11-1 23:21:28 | 显示全部楼层
用sed正则很好实现啊
发表于 2011-11-1 23:35:23 | 显示全部楼层
回复 3# FOR
  1. sed "s/cd/@\n/g" a.txt | sed "/ab.*@$/!d; s/.*ab//; s/@$//"
复制代码
根据实际情况把@设置成文件中不会出现的字符
发表于 2011-11-15 17:03:48 | 显示全部楼层
awk -F ab '/ab.*cd/{gsub(/cd.*/,"");print $NF}'
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:35 , Processed in 0.027837 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表