Awk 基于列的前两个字母进行筛选
我有一个文件如下所示:Awk 基于列的前两个字母进行筛选,awk,comparison,filtering,Awk,Comparison,Filtering,我有一个文件如下所示: 345-103832 OI.S.15.0FKOGO 345-103832 OX.S.5.0FKOGO 345-103832 QX.S.3.0FKOGO 345-103832 Qa.S.21.0FKOGO 345-114643 IX.S.13.0FKOGY 我需要打印第2列中不以“O”开头、不以“I”开头或前两个字母中不包含“O”或“I”的所有行 所以,我想说: awk'{if($2!=*O.| |$2!=O*.| |$2!=*I.| |$2!=I*)
345-103832 OI.S.15.0FKOGO
345-103832 OX.S.5.0FKOGO
345-103832 QX.S.3.0FKOGO
345-103832 Qa.S.21.0FKOGO
345-114643 IX.S.13.0FKOGY
我需要打印第2列中不以“O”开头、不以“I”开头或前两个字母中不包含“O”或“I”的所有行
所以,我想说:
awk'{if($2!=*O.| |$2!=O*.| |$2!=*I.| |$2!=I*)打印$0}。。。
结果应为:
345-103832 QX.S.3.0FKOGO
345-103832 Qa.S.21.0FKOGO
你能帮我吗?你可以用
awk '$2 !~ /^.?[OI]/' file
看
“$2!~/^.?[OI]/”
表示:打印字段2不匹配的所有行:
-行首^
-任意1个可选字符?
-要么[OI]
要么O
I
前两个字母必须是字母,将
替换为[:alpha:]
或[A-Z]
,只需根据您的要求选择最好的。亲爱的Eugenia,欢迎来到Stack Overflow。这是一个非常好的书面问题!我们不经常看到新用户在第一次尝试时添加所有需要的信息。尽管如此,不要害怕。期待在这个论坛上看到更多您的问题和答案。Wh在@kvantour,除了我看不出标题如何匹配这个问题外?哦,这是大写字母I,而不是管道。好吧,仍然…@JamesBrown将大写字母I
与|或O
与零0
不匹配是fontsettings的错误,而不是OP;-)