显示包含三行以上单词的文件?

显示包含三行以上单词的文件?

我正在尝试显示所有包含三行以上特定单词的文件。

即文件:

Andrew is so nice, 
and Andrew want some ice,
but Andrew doesn't roll the dice.

所以这个文件包含Andrew超过三行,所以会显示出来。

我使用了 grep - 或 '\' 但它列出了至少 1 行包含“word”的所有文件。

答案1

尝试

  grep -c Andrew * | awk -F: '{if ($2 >=3) print $1}'

它之所以有效是因为 grep -c 为每个文件打印“file:count”,并-F:告诉 awk 冒号分隔字段。

答案2

下面的 shell 脚本可能会有用:

#!/bin/bash

if [ $# -ne 2 ];then
  echo "Usage: `basename $0` DIRECTORY STRING"
  exit 1
fi

for file in $1/* ; do
    if [ `cat $file 2>/dev/null | grep -c $2` -ge 3 ]; then 
        echo $file
    fi
done

该脚本应使用两个参数运行:

  • DIRECTORY- 您要在其中搜索包含三行以上单词的文件的目录

  • STRING- 寻找这个词。


或者,在当前目录中的文件和单词“Andrew”中使用单个命令:

for file in *;do if [ `cat $file 2>/dev/null|grep -c Andrew` -ge 3 ];then echo $file;fi;done

相关内容