免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1610 | 回复: 5

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

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


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

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



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

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期: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未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06: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


您颜色标记的确实是对的

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


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








论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期: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未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06: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

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP