Groovy grep字符串在一组文件中出现的次数

Groovy grep字符串在一组文件中出现的次数,groovy,count,Groovy,Count,我想计算某个字符串在文件夹及其所有子文件夹中的所有文本文件中出现的次数 在Linux上使用grep执行此操作的命令如下所示 grep string * | wc -l 有没有办法改用groovy来实现这一点 谢谢 试试看: assert 2==['a','b','c','a'].grep(~/a+/).size() 其中,['a'、'b'、'c'、'a']将是您需要处理的文件或文件集合中的readLines() 它也适用于文件对象: def f = File.createTempFile('1

我想计算某个字符串在文件夹及其所有子文件夹中的所有文本文件中出现的次数

在Linux上使用grep执行此操作的命令如下所示

grep string * | wc -l
有没有办法改用groovy来实现这一点

谢谢

试试看:

assert 2==['a','b','c','a'].grep(~/a+/).size()

其中,
['a'、'b'、'c'、'a']
将是您需要处理的文件或文件集合中的
readLines()

它也适用于文件对象:

def f = File.createTempFile('111','222')
f.deleteOnExit()
f.text = "a\na\nb\nc"
assert 2 == f.grep(~/a+/).size()
a样品溶液:

import groovy.io.FileType

def parent = File.createTempDir()
parent.deleteOnExit()
def f1 = File.createTempFile('111','111', parent)
f1.deleteOnExit()
def f2 = File.createTempFile('222','222', parent)
f2.deleteOnExit()
def f3 = File.createTempFile('222','222', parent)
f3.deleteOnExit()
f1.text = 'aa\naa\nbb'
f2.text = 'cc\nbb\nbb'
f3.text = 'cc\ncc\naa\naa'

def files = []
parent.eachFileRecurse (FileType.FILES) { file ->
  files << file
}

assert 4 == files.collect { f -> f.grep(~/a+/).size() }.sum()
导入groovy.io.FileType
def parent=File.createTempDir()
parent.deleteOnExit()
def f1=File.createTempFile('111','111',父级)
f1.deleteOnExit()
def f2=File.createTempFile('222','222',父级)
f2.deleteOnExit()
def f3=File.createTempFile('222','222',父级)
f3.deleteOnExit()
f1.text='aa\naa\nbb'
f2.text='cc\nbb\nbb'
f3.text='cc\ncc\naa\naa'
def文件=[]
parent.eachFileRecurse(FileType.FILES){file->
文件f.grep(~/a+/).size()}.sum()
试试:

assert 2==['a','b','c','a'].grep(~/a+/).size()

其中,
['a'、'b'、'c'、'a']
将是您需要处理的文件或文件集合中的
readLines()

它也适用于文件对象:

def f = File.createTempFile('111','222')
f.deleteOnExit()
f.text = "a\na\nb\nc"
assert 2 == f.grep(~/a+/).size()
a样品溶液:

import groovy.io.FileType

def parent = File.createTempDir()
parent.deleteOnExit()
def f1 = File.createTempFile('111','111', parent)
f1.deleteOnExit()
def f2 = File.createTempFile('222','222', parent)
f2.deleteOnExit()
def f3 = File.createTempFile('222','222', parent)
f3.deleteOnExit()
f1.text = 'aa\naa\nbb'
f2.text = 'cc\nbb\nbb'
f3.text = 'cc\ncc\naa\naa'

def files = []
parent.eachFileRecurse (FileType.FILES) { file ->
  files << file
}

assert 4 == files.collect { f -> f.grep(~/a+/).size() }.sum()
导入groovy.io.FileType
def parent=File.createTempDir()
parent.deleteOnExit()
def f1=File.createTempFile('111','111',父级)
f1.deleteOnExit()
def f2=File.createTempFile('222','222',父级)
f2.deleteOnExit()
def f3=File.createTempFile('222','222',父级)
f3.deleteOnExit()
f1.text='aa\naa\nbb'
f2.text='cc\nbb\nbb'
f3.text='cc\ncc\naa\naa'
def文件=[]
parent.eachFileRecurse(FileType.FILES){file->
文件f.grep(~/a+/).size()}.sum()
试试:

assert 2==['a','b','c','a'].grep(~/a+/).size()

其中,
['a'、'b'、'c'、'a']
将是您需要处理的文件或文件集合中的
readLines()

它也适用于文件对象:

def f = File.createTempFile('111','222')
f.deleteOnExit()
f.text = "a\na\nb\nc"
assert 2 == f.grep(~/a+/).size()
a样品溶液:

import groovy.io.FileType

def parent = File.createTempDir()
parent.deleteOnExit()
def f1 = File.createTempFile('111','111', parent)
f1.deleteOnExit()
def f2 = File.createTempFile('222','222', parent)
f2.deleteOnExit()
def f3 = File.createTempFile('222','222', parent)
f3.deleteOnExit()
f1.text = 'aa\naa\nbb'
f2.text = 'cc\nbb\nbb'
f3.text = 'cc\ncc\naa\naa'

def files = []
parent.eachFileRecurse (FileType.FILES) { file ->
  files << file
}

assert 4 == files.collect { f -> f.grep(~/a+/).size() }.sum()
导入groovy.io.FileType
def parent=File.createTempDir()
parent.deleteOnExit()
def f1=File.createTempFile('111','111',父级)
f1.deleteOnExit()
def f2=File.createTempFile('222','222',父级)
f2.deleteOnExit()
def f3=File.createTempFile('222','222',父级)
f3.deleteOnExit()
f1.text='aa\naa\nbb'
f2.text='cc\nbb\nbb'
f3.text='cc\ncc\naa\naa'
def文件=[]
parent.eachFileRecurse(FileType.FILES){file->
文件f.grep(~/a+/).size()}.sum()
试试:

assert 2==['a','b','c','a'].grep(~/a+/).size()

其中,
['a'、'b'、'c'、'a']
将是您需要处理的文件或文件集合中的
readLines()

它也适用于文件对象:

def f = File.createTempFile('111','222')
f.deleteOnExit()
f.text = "a\na\nb\nc"
assert 2 == f.grep(~/a+/).size()
a样品溶液:

import groovy.io.FileType

def parent = File.createTempDir()
parent.deleteOnExit()
def f1 = File.createTempFile('111','111', parent)
f1.deleteOnExit()
def f2 = File.createTempFile('222','222', parent)
f2.deleteOnExit()
def f3 = File.createTempFile('222','222', parent)
f3.deleteOnExit()
f1.text = 'aa\naa\nbb'
f2.text = 'cc\nbb\nbb'
f3.text = 'cc\ncc\naa\naa'

def files = []
parent.eachFileRecurse (FileType.FILES) { file ->
  files << file
}

assert 4 == files.collect { f -> f.grep(~/a+/).size() }.sum()
导入groovy.io.FileType
def parent=File.createTempDir()
parent.deleteOnExit()
def f1=File.createTempFile('111','111',父级)
f1.deleteOnExit()
def f2=File.createTempFile('222','222',父级)
f2.deleteOnExit()
def f3=File.createTempFile('222','222',父级)
f3.deleteOnExit()
f1.text='aa\naa\nbb'
f2.text='cc\nbb\nbb'
f3.text='cc\ncc\naa\naa'
def文件=[]
parent.eachFileRecurse(FileType.FILES){file->
文件f.grep(~/a+/).size()}.sum()

BTW,您的
grep | wc-l
命令无法执行您需要的
-o
选项。否则,它将对包含图案的行求和。不是
某个字符串出现的次数
顺便说一句,您的
grep | wc-l
命令不会执行您需要的
-o
选项。否则,它将对包含图案的行求和。不是
某个字符串出现的次数
顺便说一句,您的
grep | wc-l
命令不会执行您需要的
-o
选项。否则,它将对包含图案的行求和。不是
某个字符串出现的次数
顺便说一句,您的
grep | wc-l
命令不会执行您需要的
-o
选项。否则,它将对包含图案的行求和。不是
某个字符串出现的次数