Awk子串一个字符

时间:2014-09-16 12:28:26

标签: linux bash awk substring gawk

这是columns.txt

aaa bbb 3
ccc ddd 2
eee fff 1
3   3   g
3   hhh i
jjj 3   kkk
ll  3   mm
nn  oo  3

我可以找到第二列以" b":

开头的行
awk '{if(substr($2,1,1)=="b") {print $0}}' columns.txt

我可以找到第二列以" bb":

开头的行
awk '{if(substr($2,1,2)=="bb") {print $0}}' columns.txt

为什么哦,为什么我找不到第二列中第二个字符为" b"?:

的行
awk '{if(substr($2,2,2)=="b") {print $0}}' columns.txt 

awk -W version == GNU Awk 3.1.8

2 个答案:

答案 0 :(得分:4)

您可以使用:

awk 'substr($2,2,1) == "b"' columns.txt
aaa bbb 3
  1. substr function's 3rd argument是字符串的长度。
  2. print是awk中的默认操作。

答案 1 :(得分:3)

awk '$2 ~ /^.b/' columns.txt也可以。