awk 中是否可以进行条件链接?

Is condition chaining possible in awk?

输入文件在 $1 中有两个名称。 $2 大部分是满的,但有时是空的。

    1;   2;    3; 
Trump;  abc;
Obama;  
Obama;  abc;
Obama;  
Trump;  abc;

我正在 AWK 中寻找一个条件,如果名称 "Trump" 或 "Obama" 出现在 $1 中并且 $2 是空的,则用单词 "media" 填充 $3。

我试过了:

{if (=="Trump" || =="Obama" && ==" ") {=="Media"};
print [=11=]}

{if (=="Trump" && ==" ") {=="Media"};
if (=="Obama" && ==" ") {=="Media"};
print [=12=]}

考虑到字段分隔符是 \t(tab) 并且每个第二个空字段包含 space " "(whitespace) 您可以使用以下方法:

awk -F"\t" '{OFS="\t"; if(~/Trump|Obama/ && ~/ /)="media"; print}' testfile 

~/Trump|Obama/ - 根据正则表达式检查字段值


输出:

Trump   abc
Obama           media
Obama   abc
Obama           media
Trump   abc

第二个字段的替代比较:

!~/[^ ]/

~/[[:space:]]/ - POSIX class 白色space 字符