Awk grep行不包含字符列表

Awk grep行不包含字符列表,awk,grep,Awk,Grep,我的行可以包含字母数字或这些字符中的任意一个,,,/,-,。 我想打印任何包含上面列出的字符以外的字符的行,即使它们包含上面列出的字符 我试过这个 egrep '^[[:alnum:]]|\-|\_|\/|\:\,$' 这对我没有帮助 例如:- cat fc 2 a A - _ / ? egrep -nv '^[[:alnum:]]|\-|\_|\/$' fc 7:? 但当我把它插入字符串的中间时: cat fc_v1 hello hello1 helloA h@llo h?llo e

我的行可以包含字母数字或这些字符中的任意一个
/
-
。 我想打印任何包含上面列出的字符以外的字符的行,即使它们包含上面列出的字符

我试过这个

egrep  '^[[:alnum:]]|\-|\_|\/|\:\,$'
这对我没有帮助

例如:-

cat fc
2
a
A
-
_
/
?

egrep -nv '^[[:alnum:]]|\-|\_|\/$' fc
7:?
但当我把它插入字符串的中间时:

cat fc_v1
hello
hello1
helloA
h@llo
h?llo

egrep -nv '^[[:alnum:]]|\-|\_|\/$' fc_v1
但它不起作用。我如何才能让它拾取字符,无论字符出现在行中的何处

人们的期望是印刷

h@llo0

哈罗

因为他们没有列出的字符

幸运的是,我能够通过

白鹭-n'[^[:alnum:]|-| | |/]fc|u v1

现在,实际的需求似乎不适用于上述语法

cat fc_v2

/a/?hello-sec=sys,rw,root=c;g、 诺苏德

/h/hello02-sec=sys,rw,root=c,nosuid

/h/@hello_u-sec=sys,rw,root=c,nosuid

/h/helloA-sec=sys,rw,root=c,nosuid

egrep-n'[^\[:alnum:][124;/][124; 124;-][124;\,][124;\=]'fc\u v3

1:/a/?hello-sec=sys,rw,root=c;g、 诺苏德

2:/h/hello02-sec=sys,rw,root=c,nosuid

3:/h/@hello\uu-sec=sys,rw,root=c,nosuid

4:/h/helloA-sec=sys,rw,root=c,nosuid


它会打印所有行,预期只有第3行和第1行。听起来您可能在寻找:

$ grep '[^-[:alnum:]_/:,]' file
h@llo
h?llo

但这只是猜测,因为您没有发布示例输入的预期输出。

示例输入和预期输出会很有用。此外,它也不能解决您的问题,但不推荐使用
egrep
(使用
grep-E
)。您应该编辑您的问题,而不是在评论中添加更多详细信息。当你这样做的时候,预期的结果是什么?请阅读并修改你的帖子。到目前为止,我将它标记为不清楚你在问什么。@Aravindhansevan:请在你的帖子中正确设置代码的格式。(我试过了,但是太乱了,我害怕弄坏东西。)另外,你的例子对理解这个问题没有帮助。现在有意义了吗?谢谢莫顿,你的回答帮助我找到了答案,“[:alnum:[:blank:[:space:][uu/:,=-]”没有意义。想想看。空格是空格,在一个字符类中多次列出双引号和减号。