社区
Linux/Unix社区
帖子详情
grep 搜索不含某个字符的行
ajige
2010-12-27 11:06:37
搜索不含 # 的行:
用 grep '[^]#' a.cc 为什么会把文件a.cc中的所有行都搜出来??
后来 用 grep '^[^#]$' a.cc 把问题解决了。但是不理解 为什么 用第一个指令实现不了呢?
求教!
...全文
1314
18
打赏
收藏
grep 搜索不含某个字符的行
搜索不含 # 的行: 用 grep '[^]#' a.cc 为什么会把文件a.cc中的所有行都搜出来?? 后来 用 grep '^[^#]$' a.cc 把问题解决了。但是不理解 为什么 用第一个指令实现不了呢? 求教!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Ferrerox
2010-12-29
打赏
举报
回复
[Quote=引用 16 楼 a_jige 的回复:]
没有明白这是什么意思??
[^#]和[^#]* 究竟代表什么意思?
引用 14 楼 ferrerox 的回复:
*意思是:重复前一个RE字符0到任何次
如果[^#]*表示0个[^#],那意思不就是含#吗?但如果表示1个[^#],意思就是没有#的行
所以所有的都会显示出来
[/Quote]
[^#]就是不含#的那一行,这好理解吧
* 的意思就是重复前一个RE字符0到任何次,比如前面是d,就重复d这个字符0到任何次,这好理解吧
然后 [^#]*,意思就是重复 [^#] 0到任何次了
chituma616
2010-12-28
打赏
举报
回复
[^#]指匹配任一非#字符,至于字符*表示匹配前面的字符任意次。
ajige
2010-12-28
打赏
举报
回复
没有明白这是什么意思??
[^#]和[^#]* 究竟代表什么意思?
[Quote=引用 14 楼 ferrerox 的回复:]
*意思是:重复前一个RE字符0到任何次
如果[^#]*表示0个[^#],那意思不就是含#吗?但如果表示1个[^#],意思就是没有#的行
所以所有的都会显示出来
[/Quote]
wzw12315
2010-12-27
打赏
举报
回复
grep -v "#" a.cc 这个好用
sharke118
2010-12-27
打赏
举报
回复
恩 grep 的 -v 参数 效率高
sharke118
2010-12-27
打赏
举报
回复
sed 和 awk 用法就高级了 ~
小魔菇
2010-12-27
打赏
举报
回复
-v “#”
sharke118
2010-12-27
打赏
举报
回复
grep '^[^#]' a.cc 这样就可以了 第一个 ^ 表示 以^ 后面表达式的形式开头 即以 [^#]形式开头的行
而 ^# 表示 “不是#” 的意思 合起来就是 以非 # 形式开头的行
你的这个 grep '[^]#' a.cc 好像是不合法的表示喃
Linux-Torvalds
2010-12-27
打赏
举报
回复
awk '$0 ~ /[^#]\+/{print $0}'
Linux-Torvalds
2010-12-27
打赏
举报
回复
sed -n '/#/!p'
chlaws
2010-12-27
打赏
举报
回复
'[^]#' [^]里面没有排除任何东西
Linux-Torvalds
2010-12-27
打赏
举报
回复
另外grep '^[^#]$' 正则中的开头和结尾^ $是有点多余的。
bluejays
2010-12-27
打赏
举报
回复
试试 grep -v "#" a.cc
Linux-Torvalds
2010-12-27
打赏
举报
回复
grep '[^#]' a.cc
jihen
2010-12-27
打赏
举报
回复
grep '^[^#]$' a.cc
grep 中 ^表示行首,$表示行末尾,^$配合选定一行,
grep '^[^#]*$' a.cc,应该是这样才对。
Ferrerox
2010-12-27
打赏
举报
回复
*意思是:重复前一个RE字符0到任何次
如果[^#]*表示0个[^#],那意思不就是含#吗?但如果表示1个[^#],意思就是没有#的行
所以所有的都会显示出来
Linux-Torvalds
2010-12-27
打赏
举报
回复
[Quote=引用 12 楼 a_jige 的回复:]
原贴有点错误,,我想问的是 为什么 grep '[^#]*' a.cc 实现不了将所有不含 #的行显示的功能 呢?
[/Quote]
*表示{0,},试试.*
grep '[^#].*' a.cc
ajige
2010-12-27
打赏
举报
回复
原贴有点错误,,我想问的是 为什么 grep '[^#]*' a.cc 实现不了将所有不含 #的行显示的功能 呢?
Linux系统管理常用命令集
我整理的Linux系统管理常用命令集
linux
grep
不包含某些
字符
串的命令
grep
常用用法 [root@www ~]#
grep
[-acinv] [--color=auto] '搜寻
字符
串' filename 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 -c :计算找到 '搜寻
字符
串' 的次数 -i :忽略大小写的不同,所以大小写视为相同 -n :顺便输出
行
号 -v :反向选择,亦即显示出没有 '搜寻
字符
串' 内容的那一
行
!...
如何
grep
不包含以某个
字符
的开始的
行
正则表达式: ^ :
行
起始标志, 例如:^ben 表示匹配以ben开始的
行
。 $ :
行
结尾标志。例如:ben$ 表示匹配以ben结束的
行
。 [^] :匹配除[^
字符
]之外的任何一个
字符
。 例如9[^0], 不会匹配90,但是会匹配91,92等。 如何使用 [user@sever]$
grep
'^[^#]' files 上面的命令会选择
行
首不为#的
行
作
grep
过滤不包含某些
字符
串的命令
1.
grep
命令 [root@www ~]#
grep
[-acinv] [--color=auto] '搜寻
字符
串' filename 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 -c :计算找到 '搜寻
字符
串' 的次数 -i :忽略大小写的不同,所以大小写视为相同 -n :顺便输出
行
号 -v :反向选择,亦即显示出没有 '搜寻
字符
串' 内容的那一...
Linux的
grep
命令
6、只匹配整个单词,而不是
字符
串的一部分(如匹配’magic’,而不是’magical’),4、显示/usr/src目录下的文件(
不含
子目录)包含magic的
行
。5、显示/usr/src目录下的文件(包含子目录)包含magic的
行
。[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求。3、显示所有包含每
行
字符
串至少有5个连续小写
字符
的
字符
串的
行
。-l:查询多文件时只输出包含匹配
字符
的文件名。-s:不显示不存在或无匹配文本的错误信息。-v:显示不包含匹配文本的所有
行
。^:匹配正则表达式的开始
行
。
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章