如何用Awk按第3列指定位置的子串筛选并输出行?
提取指定条件的文本行
需求
现有一个3列的文本文件a.txt,内容如下:
1 a1 abcd 2 b1 acdb 3 c1 abcd
需要提取**第3列第2位字符为'b'**的行,预期输出:
1 a1 abcd 3 c1 abcd
正确命令实现
你之前尝试的命令仅修改了第3列内容并输出所有行,未实现过滤需求。以下是两种正确的awk实现方式:
方式一:正则匹配
awk '$3 ~ /^.b/ {print}' a.txt
通过正则^.b匹配第3列前两位:第一位为任意字符,第二位为'b',满足条件则打印整行。
方式二:字符截取判断
awk 'substr($3,2,1) == "b" {print}' a.txt
用substr($3,2,1)提取第3列的第2位字符,判断其等于'b'时打印整行。
内容的提问来源于stack exchange,提问作者Pandu C
相关产品推荐
相关产品推荐

