免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5444 | 回复: 8
打印 上一主题 下一主题

awk是否支持匹配表达式,并捕获文本到自动命名的变量里 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-04 10:53 |只看该作者 |倒序浏览
awk是否支持匹配表达式,并捕获文本到自动命名的变量里。
比如$0="aaabbb(ccc,ddd)"
(?<name>\(.+\)) 怎么样通过这个匹配将(ccc,ddd)放到变量name里面。
不知道在awk里面我因该怎么写?

论坛徽章:
0
2 [报告]
发表于 2010-06-04 11:02 |只看该作者
name=$(awk ....)
lz想要啥具体说一下吧。。。。不然还真不知道用awk怎么帮你处理。。。。。

论坛徽章:
0
3 [报告]
发表于 2010-06-04 11:32 |只看该作者
  1. awk不支持那个,用grep -P或者perl
复制代码

论坛徽章:
0
4 [报告]
发表于 2010-06-04 12:27 |只看该作者
回复 2# lkk2003rty


    我用mount命令得到如下结果:
$ mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1g on /data1 (ufs, local, soft-updates)
/dev/ad0s1f on /usr (ufs, local, soft-updates)
/dev/ad0s1d on /var (ufs, local, soft-updates)
/dev/ad1s1 on /usr/home/guangtong/temptest (ufs, local, read-only)
/dev/ad0s1e on /tmp (ufs, local, soft-updates)
/dev/ad1s1c on /usr/home/guangtong/temptest1 (ufs, local, read-only)
10.210.12.221:/data1/nfstest on /nfstest (nfs)

我现在想把括号里面的当作一个变量,就是想通过正则匹配到括号里面的值,然后放到awk的某个变量里面

论坛徽章:
0
5 [报告]
发表于 2010-06-04 12:36 |只看该作者
用“(”“)”做分隔符,$NF-1不就是你想要的吗?

论坛徽章:
0
6 [报告]
发表于 2010-06-04 12:36 |只看该作者
回复 4# pgt112you

  1. awk '{v=$0;sub(/.*\(/,"(",v);a[$1]=v}END{for (i in a) print i,a[i]}'

  2.   一定要用正则的话用gensub
  3. awk '{a[$1]=gensub(/.*(\(.*)/,"\\1",1)}END{for (i in a) print i,a[i]}'  

复制代码

论坛徽章:
0
7 [报告]
发表于 2010-06-04 13:24 |只看该作者
谢谢大家了

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
8 [报告]
发表于 2010-06-04 13:26 |只看该作者

  1. mount | awk -F'[()]' '{print $(NF-1)}'
复制代码

论坛徽章:
0
9 [报告]
发表于 2010-06-04 14:13 |只看该作者
echo "aaabbb(ccc,ddd)"|awk '{a=gensub(/[^(]*\(([^,]*)\,([^)]*)\).*/,"\\1",1,$0);b=gensub(/[^(]*\(([^,]*)\,([^)]*)\).*/,"\\2",1,$0);print a,b}'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP