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

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

gawk如何提取指定字符之间的字符串
如何提取ab和cd之间的字符串
a.txt
abdifdfajfidf
afieeacdefe
efabifadficdiefjeie
abidfeiecd
abdifieeidcdiefie
faifejeia
如上,蓝色字体为需要提取的字符串

  1. sed -r "/ab.*cd/!d; s/.*ab(.*)cd.*/\1/" a.txt
复制代码

TOP

本帖最后由 FOR 于 2011-11-1 22:54 编辑

回复 2# awk


题意没有说清楚,这个 sed 有贪婪性
比如
ab1234cd0000cd
我需要的是ab至第一个cd之间的内容即1234而不是1234cd0000
还有如果一行中有多个ab。。。cd 。。。能把内容都提取出来吗?
比如 ab1234cd000ab2222cd99999ab8888
提取
1234
2222
后面 ab 后面的8888不要,因为没有cd结尾。

TOP

用sed正则很好实现啊

TOP

回复 3# FOR
  1. sed "s/cd/@\n/g" a.txt | sed "/ab.*@$/!d; s/.*ab//; s/@$//"
复制代码
根据实际情况把@设置成文件中不会出现的字符

TOP

awk -F ab '/ab.*cd/{gsub(/cd.*/,"");print $NF}'

TOP

返回列表