Linux下使用awk筛选列尾为'a'且年龄超30岁的文本记录方法
修正后的可执行awk命令
awk 'NR>1 && $1 ~ /a$/ && $4>30 {print $1,$2}' New.txt
补充逻辑说明
原有命令仅实现了年龄大于30的筛选,需要追加两处规则才能完全匹配需求:
- 增加
NR>1判断,跳过首行表头,避免表头的文本字段参与数字比较产生异常,防止表头内容被误输出 - 增加名字匹配规则:用awk内置的正则匹配语法
$1 ~ /a$/判断第一个字段(名字列)是否以字母a结尾。其中~是正则匹配运算符,$1对应每行的名字列,正则表达式里的$是结尾锚定符,确保只匹配以a字符收尾的内容 - 所有筛选条件用逻辑与
&&连接,只有同时满足所有条件的行,才会执行打印名字、姓氏的动作 - 如果需要不区分大小写匹配结尾的a/A,可以将名字匹配规则改为
$1 ~ /[aA]$/,适配大小写混用的名字场景
实际运行输出
针对提供的New.txt样例内容,命令执行后输出结果为:
Jessica Alba
内容的提问来源于stack exchange,提问作者JaredPL
相关产品推荐
相关产品推荐

