我需要找到特定字符串出现两次或更多次的文件.
例如,对于三个文件:
档案1:
Hello World!
Run Code Online (Sandbox Code Playgroud)
文件2:
Hello World!
Hello !
Run Code Online (Sandbox Code Playgroud)
档案3:
Hello World!
Hello
Hello Again.
Run Code Online (Sandbox Code Playgroud)
-
我想要grep Hello并且只获取文件2&3.
Joh*_*n C 21
那这个呢:
grep -o -c Hello * | awk -F: '{if ($2 > 1){print $1}}'
Run Code Online (Sandbox Code Playgroud)
sav*_*nto 10
由于问题被标记为grep,因此这是一个仅使用该实用程序和bash(awk不需要)的解决方案:
#!/bin/bash
for file in *
do
if [ "$(grep -c "Hello" "${file}")" -gt 1 ]
then
echo "${file}"
fi
done
Run Code Online (Sandbox Code Playgroud)
可以是单线:
for file in *; do if [ "$(grep -c "Hello" "${file}")" -gt 1 ]; then echo "${file}"; fi; done
Run Code Online (Sandbox Code Playgroud)
for file in *使用您想要获取所有数据文件的任何 shell 扩展来修改该语句。grep -c 返回与模式匹配的行数,一行上的多个匹配仍然只计算一个匹配的行。if [ ... -gt 1 ]测试文件中是否有不止一行匹配。如果是这样的话:echo ${file} 打印文件名。| 归档时间: |
|
| 查看次数: |
12914 次 |
| 最近记录: |