Linux/Unix:Sed/Grep/Awk打印行(如果只有3个单词的话)

时间:2020-01-09 10:46:08  来源:igfitidea点击:

我有一个文本文件:

This is a test. 
Unix is Best. 
No Linux is the Best. 
Hello Linux
welcome to linux world
welcome to theitroad

如何打印仅包含三(3)个单词的所有行?

awk命令非常适合这种模式处理文本文件。

Awk设置名为NF的变量。
它设置为输入记录中的字段总数。
因此,如果NF等于3,则打印该行。
语法如下:

awk '{ if ( NF == 3 ) print } ' /path/to/input

在循环和循环中使用IFS(内部字段分隔符)时,还可以使用Shell脚本来模拟awk命令输出:

#!/bin/bash
# AWK NF if condition (awk '{ if ( NF == 3 ) print } ' $_input) emulation using bash 
# Author: theitroad <www.theitroad.local>
# ----------------------------------------------------------------------------------
_input="/path/to/data.txt"
_word=3
while IFS= read -r line
do 
	set -- $line
	[ $# -eq $_word ] &&  echo "$line" 
done < "$_input"