在awk中条件链是否可行?

时间:2017-03-24 11:58:18

标签: awk conditional chaining

输入文件有1个两个名字。 2美元大部分已经填满,但有时空无一人。

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

如果名称“特朗普”或“奥巴马”出现在1美元而2美元是英特尔,我正在寻找AWK的条件,用“媒体”这个词填充3美元。

我试过了:

{if ($1=="Trump" || $1=="Obama" && $2==" ") {$3=="Media"};
print $0}

{if ($1=="Trump" && $2==" ") {$3=="Media"};
if ($1=="Obama" && $2==" ") {$3=="Media"};
print $0}

1 个答案:

答案 0 :(得分:1)

考虑到字段分隔符为\t(制表符),并且每个第二个字段为空,包含空格" "(空格),您可以使用以下方法:

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

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

输出:

Trump   abc
Obama           media
Obama   abc
Obama           media
Trump   abc

第二个字段的替代比较:

$2!~/[^ ]/

$2~/[[:space:]]/ - 用于空格字符的POSIX类