wangxiaozao2016 2016-07-12 07:17 采纳率: 0%
浏览 754

这两个正则表达式为什么结果一样?

grep -v "^[[:space:]]*#" 这句是匹配不包含空格制表符开头的行

awk 'BEGIN{FS=":"}{if($1~/^[[:space:]]*[^#]/) print $1}'

这句awk 匹配的也是不包含空格制表符开头的行 打印了变量1

grep -v 是取反

awk 中 ~ 是正向匹配

这是为什么??

  • 写回答

1条回答 默认 最新

  • Wolf_cgl 2016-07-12 08:59
    关注

    正则表达式的* 表示其前置字符出现0次或多次
    grep -v "^[[:space:]]*#" 的意思就成了 不包含#
    awk 'BEGIN{FS=":"}{if($1~/^[[:space:]]*[^#]/) print $1}' 也是不包含#

    看你的意思可能是要:grep -v "^[[:space:]].*#" 不以空制表符开头且不包含#

    评论

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型