有什么区别:
grep "[-0-9]" xyz.lst
和
grep "[^-0-9]" xyz.lst
答案 0 :(得分:1)
插入符号(^
)否定了该类。因此,您的第一个表达式与减号和数字0到9匹配。在第二个表达式中,它将匹配不减号或数字的任何内容。
答案 1 :(得分:0)
第二个表示否定“一切不是......”
答案 2 :(得分:0)
此[-0-9]
是字符-
的字符类和字符范围0-9
,即以下-,0,1,2,3,4,5,6,7,8,9
(它匹配任何数字或连字符) )。以^
开头的字符类是对该类的否定,即它匹配该类中的任何不。
<强>演示强>:
$ cat file
-
1
a
2
b
3
c
-
$ grep '[-0-9]' file
-
1
2
3
-
$ grep '[^-0-9]' file
a
b
c
答案 3 :(得分:0)
其中一个发现该行中任何位置都带有数字或-
(短划线)字符。
另一行发现每一行都不是数字或破折号。
例如,两个命令都会在文件中找到该行:
k9
因为那里包含了一个数字的东西,以及一些不是。
请注意,如果在第二种情况下你想要的是&#34;告诉我每行不包含数字或短划线&#34;,你想要的是其中之一:(任一命令都能工作)
grep -v '[-0-9]' xyz.lst
grep '^[^-0-9]*$' xyz.lst