Chinaunix

标题: awk 小括号问题! [打印本页]

作者: kaffeine    时间: 2012-08-14 14:53
标题: awk 小括号问题!
来着《sed 与 awk (第二版)》 P168

$6 ~ /1?(-| )?\(?[0-9]+\)?( |-)?[0-9]+-[0-9]+/

(-| )?表示在随后的位置上查找一个连字符或一个空格,或什么也没有。
这里我在机器上测试不行啊,只有用[]才行……gawk nawk awk 都测试过了。
作者: personball    时间: 2012-08-14 15:30
回复 1# kaffeine


    囧,给出你的测试例子来看看吧,
我这就一本饭醉团伙的sed+awk pdf。。168页貌似没这句。。。
不过正则某些符号的使用确实有不一样的地方。。
作者: kaffeine    时间: 2012-08-14 16:11
personball 发表于 2012-08-14 15:30
回复 1# kaffeine


你那个版本在155页,你看看。
作者: personball    时间: 2012-08-14 16:23
回复 3# kaffeine


    能匹配啊- -
  1. personball@vostro:~$echo -e '707-724-0000\n(707) 724-0000'|awk '$0~/1?(-| )?\(?[0-9]+\)?( |-)?[0-9]+-[0-9]+/{print $0}'
  2. 707-724-0000
  3. (707) 724-0000
  4. personball@vostro:~$
复制代码

作者: kaffeine    时间: 2012-08-14 16:32
personball 发表于 2012-08-14 16:23
回复 3# kaffeine


您看看我的测试问题在哪……谢谢啦

作者: kaffeine    时间: 2012-08-14 17:00
personball 发表于 2012-08-14 16:23
回复 3# kaffeine


你这个echo这样可以,但是写到文件里也不行了
|被解释成了“或”
作者: personball    时间: 2012-08-14 17:24
回复 6# kaffeine


    系统版本,shell版本,gawk版本贴一下看看= =
作者: personball    时间: 2012-08-14 17:27
本帖最后由 personball 于 2012-08-14 17:29 编辑

回复 5# kaffeine


    突然发现,你贴的这个结果没问题啊

(-| )?

这里的竖线就是  或 的意思。。。

[-| ] 这里的竖线就是竖线符号的意思。。。。


你的问题到底在哪?


(-| )?表示在随后的位置上查找一个连字符一个空格,或什么也没有。

作者: waker    时间: 2012-08-14 17:29
[-| ]还是[- ]区别一下吧
作者: kaffeine    时间: 2012-08-14 17:32
@waker@personball

是在抱歉啊!是我自己看错了,我以为书上的解释是匹配-或|或空格,看错了……{:3_203:}
作者: personball    时间: 2012-08-14 17:34
回复 10# kaffeine


    囧,  后面一个  “或什么也没有” 其实是 ? 问好的作用。。。
下班回家,回家回家。。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2