使用';和';和';或';合并在'中的报表;if语句';在bash中使用awk
我试图在awk中的if语句中结合使用';和';和';或';合并在'中的报表;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( ($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语法与此无关。