使用';和';和';或';合并在'中的报表;if语句';在bash中使用awk

使用';和';和';或';合并在'中的报表;if语句';在bash中使用awk,bash,awk,Bash,Awk,我试图在awk中的if语句中结合&&和|。我基本上就是这样做的: awk '{if( ($3=="/M" && $4>=35) || ($3 =="/M" && $5 = "/Married" && $4 >= 25) || ($3 == "/F" && $4 = 36) )} {print}' 我的陈述没有如预期的那样有效。相反,它返回了一个错误。这个问题有语法错误还是需要重新措辞?请帮忙 这是文件的外观: Ka

我试图在awk中的if语句中结合
&&
|
。我基本上就是这样做的:

awk '{if( ($3=="/M" && $4>=35) || ($3 =="/M" && $5 = "/Married" && $4 >= 25) || ($3 == "/F" && $4 = 36) )} {print}'  
我的陈述没有如预期的那样有效。相反,它返回了一个错误。这个问题有语法错误还是需要重新措辞?请帮忙

这是文件的外观:

Kamila Haynes F 52 Single 2015 604-555-8291 76102
Aliana Hardin F 45 Single 2016 236-555-5788 66456
Charlee Ortega F 24 Single 2016 604-555-8187 85009
Ryan Nelson M 25 Married 2017 604-555-2323 44715   
Ruth Contreras F 49 Single 2016 604-555-8829 64391    
Adrienne Gould F 23 Single 2017 604-555-7973 72203    
Kayson Blair M 40 Married 2016 778-555-6806 69082    
Alexia Hardy F 40 Married 2015 778-555-6684 72270    
Lochlan Bradshaw M 27 Single 2016 236-555-7631 66518    
Mohammed Allison M 27 Single 2016 778-555-4204 70087
这就是所需的输出:

所有35岁或以上的男性以及所有25岁或以上的已婚男性都需要删除。此外,所有不完全是36岁的妇女也必须删除。输出可能不存在(此处可能使用“下一步”命令)

编辑: 这是输出可能的样子:

Kamila Haynes F 52单曲2015 604-555-8291 76102
Aliana Hardin F 45单人2016 236-555-5788 66456
Charlee Ortega F 24单人2016 604-555-8187 85009
露丝·孔特雷拉斯F 49单人2016 604-555-8829 64391
Adrienne Gould F 23单人2017 604-555-7973 72203
Alexia Hardy F 40已婚2015 778-555-6684 72270
Lochlan Bradshaw M 27单人2016 236-555-7631 66518

Mohammed Allison M 27 Single 2016 778-555-4204 70087

请尝试以下内容,并让我知道这是否对您有帮助:

awk '!($3=="M" && $4>=35) && !($3=="F" && $4>=25) && !($3=="F" && $4!=36)'   Input_file
说明:

!($3==“M”&&$4>=35)
:此条件将检查第三个字段(我认为始终是性别字段)是否为
M
和第四个字段(我认为始终是年龄字段),因此在此检查第三个字段是否为M,第四个字段是否大于或等于35
开始时,它将否定条件(使其与条件相反),因此它将删除所有年龄大于35岁的男性行

&&
:两个条件之间的和表示两个条件都应为真

!($3==“F”&&$4>=25)
:检查此处是否不应打印性别为女性且年龄超过25岁的人


&&!($3==“F”&&$4!=36)
:&&确保所有条件都应该是真的,我提出的条件是,如果第3个字段上有一个女性值,并且第4个字段不等于36,那么跳过该行。

非常感谢您,先生!这对我很有效,不需要引用integers@GaganpreetSinghMaan,Maan saab,查看此链接如何通过向上投票并为任何人选择正确答案来表示感谢:)@Gaganpreetinghman,在上述第二种情况中也添加
$5==“已婚”
$3==“F”&&&$4>==“25”&&$5==“已婚”`以获得此项服务,那就让我知道进展如何。
$5=“/Married”
不是一个比较;两者都不是
$4=36
。这些赋值如果经过计算,会改变
$5
$4
字段的值。这就是输出应该是:(我无法逐行粘贴此内容)Kamila Haynes F 52 Single 2015 604-555-8291 76102;;Aliana Hardin F 45单曲2016 236-555-5788 66456;;Charlee Ortega F 24单曲2016 604-555-8187 85009;;Ruth Contreras F 49 Single 2016 604-555-8829 64391;;Adrienne Gould F 23单曲2017 604-555-7973 72203;;Alexia Hardy F 40已婚2015 778-555-6684 72270;;Lochlan Bradshaw M 27 Single 2016 236-555-7631 66518;;Mohammed Allison M 27 Single 2016 778-555-4204 70087将其粘贴到您的原始帖子@gaganpreetinghmaan,Gagan,请使用按钮
{}
在代码标签中添加示例输入/输出。顺便说一句,这纯粹是一个awk问题——bash语法与此无关。