linux 统计匹配字符串的行数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 统计匹配字符串的行数相关的知识,希望对你有一定的参考价值。

一个test文件夹下面有很多的.txt文件,每个.txt文件里面都有N多行的数据。

现在有一个字符串,需要分别去统计test文件夹下面的那些.txt文件中,每个文件有多少行是包含了这个字符串的。然后列出 (文件名:匹配到的行数) 的形式显示出来,如果一个文件一行都没有包含,则不需要列出这个文件。
Linux语句怎么写呢?

这是给出字符串"hi"统计目录/path/to/test. 可以把命令中的这两个参数换成你需要的.

find /path/to/test -name "*.txt" -type f -print0 | xargs -0 -n1 awk '/hi/a++ENDif(a>0)print FILENAME":" a'

追问

假如现在,我不需要(文件名:匹配到的行数)这格式了,只要输出这个文件夹下一共有多少匹配上的行,语句怎么改下呢?

追答grep hi /path/to/test/*.txt | wc -l

追问

报错 参数列表过长。 怎么办?

追答find /path/to/test -name "*.txt" -type f -print0 | xargs -0 -n1 grep hi | wc -l


你的文件数量可能有点多

参考技术A #!/bin/sh

string="abcd"

for file in `find ./ -name '*.txt' -print`
do
num=`grep $string $file | wc | awk 'print $1'`
if [ $num != 0 ]; then
echo $file $num
fi
done

参考技术B 用正则表达式
sed -n '/匹配的内容/p' 需要读取的文件 >>将匹配后的结果写入文件名

linux怎么查看/etc/passwd 文件内容并统计文件的行数

参考技术A cat /etc/passwd
cat /etc/passwd|wc -l
参考技术B  wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。
  语法:wc [选项] 文件…
  说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。
  该命令各选项含义如下:
  - c 统计字节数。
  - l 统计行数。
  - w 统计字数。
  这些选项可以组合使用。
  输出列的顺序和数目不受选项的顺序和数目的影响。
  总是按下述顺序显示并且每项最多一列。
  行数、字数、字节数、文件名
  如果命令行中没有文件名,则输出中不出现文件名。  例如:
  $ wc - lcw file1 file2
  4 33 file1
  7 52 file2
  省略任选项-lcw,wc命令的执行结果与上面一样。

以上是关于linux 统计匹配字符串的行数的主要内容,如果未能解决你的问题,请参考以下文章

linux学习--grep与sed

linux怎么查看/etc/passwd 文件内容并统计文件的行数

Linux 文件行数统计

Linux 字符处理之grep

grep 命令使用

Linux wc 命令