awk子string单个字符

这里是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 

我可以find第二列以“b”开头的行:

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

我可以find第二列以“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

您可以使用:

 awk 'substr($2,2,1) == "b"' columns.txt aaa bbb 3 
  1. substr函数的第三个参数是字符串的长度。
  2. print是awk中的默认操作。

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