我正在尝试显示所有包含三行以上特定单词的文件。
即文件:
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