免费注册 查看新帖 |

Chinaunix

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

awk中使用 "||"作为分隔符好像不行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-29 14:38 |只看该作者 |倒序浏览
大家好!
我创建了一个小文本文件(test.txt)内容如下:
aaa||bbb


现在使用awk -F "||" '{print $1}'  test.txt 打印结果:
aaa||bbb

貌似 "||" 不能作为分割符使用 我也加过 "\"试过 也不行,但其他如 "&&" "##"就可以,难道这是awk的bug?

多谢大家指点!

论坛徽章:
0
2 [报告]
发表于 2008-07-29 14:42 |只看该作者
[|][|]

论坛徽章:
0
3 [报告]
发表于 2008-07-29 14:43 |只看该作者
"|"是正则表达式的元字符(meta character)需要转意,用中挂号挂起来就行了:

# cat a
aaa||bbb||ccc
111||222||333

#cat a|awk 'BEGIN{FS="[|][|]"}{print $2,$3}'
bbb ccc
222 333

论坛徽章:
0
4 [报告]
发表于 2008-07-29 14:44 |只看该作者
2楼动作可真快啊,比偶快了1分钟。刚发完发现有人给回复了。

论坛徽章:
0
5 [报告]
发表于 2008-07-29 14:44 |只看该作者
-F "[|]+"

论坛徽章:
0
6 [报告]
发表于 2008-07-29 14:46 |只看该作者
原帖由 gucuiwen 于 2008-7-29 14:44 发表
2楼动作可真快啊,比偶快了1分钟。刚发完发现有人给回复了。

论坛徽章:
0
7 [报告]
发表于 2008-07-29 14:47 |只看该作者
顶一下,Shell好学不,我也想尝试一下

论坛徽章:
0
8 [报告]
发表于 2008-07-29 15:04 |只看该作者
多谢大家了!

但是我还是有点疑惑。为什么 "&&"就可以运行,而竖线这么麻烦呢? []的作用是?

论坛徽章:
0
9 [报告]
发表于 2008-07-29 15:09 |只看该作者
原帖由 blacksabbather 于 2008-7-29 15:04 发表
多谢大家了!

但是我还是有点疑惑。为什么 "&&"就可以运行,而竖线这么麻烦呢? []的作用是?


在这里,[]的作用是转意,包含在[]中的字符都会失去他特殊的含义,就好比命令行中*、!等字符需要加\,来转意一样。

&字符在正则表达式中不是特殊字符,所以不需要转意,|字符表示或操作,有特殊含义,所以需要转意。

论坛徽章:
0
10 [报告]
发表于 2008-07-29 15:54 |只看该作者
恩,学习了
加问下,如果分割符是TAB,该用什么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP