忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 394 | 回复: 5

[文本处理] awk -F[[]] 和 -F[][] 为啥不同 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之同曦
日期:2017-03-19 09:57:50
发表于 2017-03-18 15:28 |显示全部楼层


可能这个问题算挖坟了, 但在论坛了确实搜了很久没找到

awk -F'[[]]'  实际分隔符是 [] 这个整体
awk -F'[][]'  实际分隔符是] 和 [



为啥会是这样的结果,我理解第一个,集合的成员也应该是 [ 和 ],为啥被当成一个整体了,加转移字符又报错了

论坛徽章:
112
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2017-03-19 08:52 |显示全部楼层
回复 1# 农民伯伯丶

[ [ ]     ]     ==>  实际分隔符是 [  ] 这个整体



[    ] [   ]    ==> 实际分隔符是][

[] => empty, you cannot do that


论坛徽章:
1
15-16赛季CBA联赛之同曦
日期:2017-03-19 09:57:50
发表于 2017-03-19 09:56 |显示全部楼层
本帖最后由 农民伯伯丶 于 2017-03-19 10:00 编辑

最近回复老是重复,什么鬼啊

论坛徽章:
1
15-16赛季CBA联赛之同曦
日期:2017-03-19 09:57:50
发表于 2017-03-19 09:56 |显示全部楼层
本帖最后由 农民伯伯丶 于 2017-03-19 10:01 编辑

回复 2# jason680


实际测试结果:
$ echo "ac[]d[e]" | awk -F '[[]]' '{print $2}'
d[e]

$ echo "ac[]d[e]" | awk -F '[][]' '{print $2}'
b


您颜色标记的确实是对的

[ [ ] ] 这个的分隔符取集合中的[,然后再与]一起组成分隔符,并非 [[]],虽然最后结果是一样的
[
] [ ] 分隔符为集合中的 ]和[,不明白您后面说的空是什么意思?集合中的元素为空?但测试结果显示分隔符是[ 和 ]


主要不明白括号为什么会这样组合,要么都是最大匹配,那第一个应该为
[ []  ] ,要么都是按照最小的匹配,即第二个为 [ ] [ ], 这样才能说通吧,忽大忽小感觉没法理解了








论坛徽章:
112
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2017-03-19 10:25 |显示全部楼层
本帖最后由 jason680 于 2017-03-19 10:39 编辑

回复 4# 农民伯伯丶

上点心吧孩子(还是该叫你伯伯)

$ echo "ac[]d[e]" | awk -F'[]' '{print $2}'
awk: fatal: Unmatched [ or [^: /[]/


Note: [] ==> empty, you CANNOT do that

按你的说法,都是最小匹配
[ ] (中间不可“空”empty)
  
[ ] [ ]   <==最小匹配, []中间不可“空”empty

论坛徽章:
1
15-16赛季CBA联赛之同曦
日期:2017-03-19 09:57:50
发表于 2017-03-19 10:33 |显示全部楼层
回复 5# jason680

原来是说集合不能为空,这个知道啊
能解答一下这句吗 “不明白括号为什么会这样组合,要么都是最大匹配,那第一个应该为 [ []  ] ,要么都是按照最小的匹配,即第二个为 [ ] [ ], 这样才能说通吧,忽大忽小感觉没法理解了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

SACC2017购票6.8折优惠进行时

2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店震撼来袭。今年,大会以“云智未来”为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置2大主会场,18个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100余位技术专家及行业领袖来分享他们的经验;并将吸引4000+人次的系统运维、架构师及IT决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年8月2日前

活动链接>>
  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP