Awk 用字母数字搜索图案并打印线条

Awk 用字母数字搜索图案并打印线条,awk,Awk,我有格式的数据 A ((!(A1+A2))) B (A1A2) C (A1+A2) D (!(A1+A2)B1) E (!A1+!A2) F (!(!A1!A2)+A3+A4) G ((A1!A2)B1) 我希望输出为 E (!A1+!A2) F (!(!A1!A2)+A3+A4) G ((A1!A2)B1) 我想得到那行有仅使用字母数字 我曾经 awk -F' ' '$2 ~ /\!/' file 这也 awk '$2'~/^[(!)_[:alnum:]]+[(!)+

我有格式的数据

A  ((!(A1+A2)))
B  (A1A2)
C  (A1+A2)
D  (!(A1+A2)B1)
E  (!A1+!A2)
F  (!(!A1!A2)+A3+A4)
G  ((A1!A2)B1)
我希望输出为

E  (!A1+!A2)
F  (!(!A1!A2)+A3+A4)
G  ((A1!A2)B1)
我想得到那行有
仅使用字母数字

我曾经

awk -F' ' '$2 ~ /\!/' file
这也

awk '$2'~/^[(!)_[:alnum:]]+[(!)+_[:alnum:]]+$/' file

但是这里列出了所有包含
的行以及
也是字母数字。

你可以要求一个起始(前导)单词边界(
\我想我想我想得到的那一行只有
字母数字的意思:不是
!(

输出:

E  (!A1+!A2)
F  (!(!A1!A2)+A3+A4)
G  ((A1!A2)B1)
E  (!A1+!A2)
F  (!(!A1!A2)+A3+A4)
G  ((A1!A2)B1)
如果您的实际数据不是很紧,您可能需要进行一些空间检查,例如:
/!*[^(]/

我想得到只有字母数字的
行:

您只需使用此正则表达式匹配
,后跟字母数字字符:

/![[:alnum:]/
awk命令:

awk'$2~/![:alnum:]/'文件
E(!A1+!A2)
F(!(!A1!A2)+A3+A4)
G((A1!A2)B1)

如果这还不是您所需要的全部,那么编辑您的问题,以更清楚地说明您的需求,并提供不适用于您的示例输入/输出。

还有
awk

awk '/![[:alpha:]]+/' file         
E  (!A1+!A2)
F  (!(!A1!A2)+A3+A4)
G  ((A1!A2)B1)


++先生,谢谢你分享干杯,这是一个很好的解决方案。
$ grep '![[:alpha:]]' file
E  (!A1+!A2)
F  (!(!A1!A2)+A3+A4)
G  ((A1!A2)B1)

$ awk '/![[:alpha:]]/' file
E  (!A1+!A2)
F  (!(!A1!A2)+A3+A4)
G  ((A1!A2)B1)

$ sed -n '/![[:alpha:]]/p' file
E  (!A1+!A2)
F  (!(!A1!A2)+A3+A4)
G  ((A1!A2)B1)
awk '/![[:alpha:]]+/' file         
E  (!A1+!A2)
F  (!(!A1!A2)+A3+A4)
G  ((A1!A2)B1)

awk '/![[:alpha:]][[:digit:]]/' file
E  (!A1+!A2)
F  (!(!A1!A2)+A3+A4)
G  ((A1!A2)B1)