AWK:如何根据字段中的单词数选择行?

use*_*495 5 awk text-processing

这是我拥有的文本文件:

1|this|1000
2|that|2000
3|hello|3000
4|hello world|4000
5|lucky you|5000
6|awk is awesome|6000
.
.
.
Run Code Online (Sandbox Code Playgroud)

如何仅打印 $2 中只有两个单词(第 4 行和第 5 行)的行?

这是我尝试过的,但它计算的是字母数而不是单词数:

awk -F"|" '{if(length($2==2) print $0}'
Run Code Online (Sandbox Code Playgroud)

ste*_*ver 16

您可以使用 awksplit函数的返回值:

$ awk -F'|' 'split($2,a,"[ \t]+") == 2' file
4|hello world|4000
5|lucky you|5000
Run Code Online (Sandbox Code Playgroud)