shell - 在多个文件中,从grep搜索中获取最后一行

找到了只显示grep搜索的最后一行的方法:


grep PATERN FILE_NAME | tail -1

我还找到了在多个选定文件中进行grep搜索的方法:


find . -name"FILE_NAME" | xargs -I name grep PATERN name

现在,我只想得到每个文件的grep结果的最后一行,我试过这个:


 find . -name"FILE_NAME" | xargs -I name grep PATERN name | tail -1

谁知道该怎么做?

非常感谢!

时间:


for f in $(find . -name"FILE_NAME"); do grep PATERN $f | tail -1; done


find . -name"FILE_NAME" -print0 | while read -d '' aa
do
 grep PATTERN"$aa" | tail -1
done

你可以使用find来执行命令:


find . -name"<file-name-to-find>" -exec grep"<pattern-to-match>""{}"";" | tail -1

最快的方法是从文件中获取最后1行(或更多行)的输出,然后grep该行。

tail -1 filenames.* | grep "what you want to grep for "


find . -type f -exec sh -c"fgrep print {} /dev/null |tail -1" ;

./tway.pl:print map(lambda x : x[1], filter(lambda x : x[0].startswith('volume'), globals().items()))
./txml.py: print("%s does not exist: %sn" % (host, error))
./utils.py:print combine_dicts(a, b, operator.mul)
./xml_example.py:print ET.tostring(root, method="text")


find . -type f -exec sh -c"fgrep print {} /dev/null" ;

给出:


./tway.pl:print map(lambda x : x[1], filter(lambda x : x[0].startswith('volume'), globals().items()))
./txml.py: print("%s resolved to --> %sn" % (host, ip))
./txml.py: print("%s does not exist: %sn" % (host, error))
./utils.py:print"a", a
./utils.py:print"b", b
./utils.py:print combine_dicts(a, b, operator.mul)
./xml_example.py: print">>"
./xml_example.py: print ET.tostring(e, method="text")
./xml_example.py: print"<<"
./xml_example.py:print ET.tostring(root, method="text")

找到最后一行的另一种方法是,反转文件并输出第一个匹配项。


find . -name"FILE_NAME" | xargs -I name sh -c 'tac name|sed -n"/PATTERN/{p;q}"'

...