繁体   English   中英

grep regex:从目录中的所有文件中提取模式

[英]grep regex : extract pattern from all files in a directory

可以说一个目录有两个文件。 这是内容

File1.txt

tagstart random string tagend

tagstart random string tagend

File2.txt

tagstart random string tagend

tagstart random string tagend

我想grep目录并提取具有以下模式的行

tagstart <any string> tagend

我也想将输出传递到另一个文件。 基本上,grep命令将产生这样的输出文件

out.txt

tagstart random string tagend

tagstart random string tagend

tagstart random string tagend

tagstart random string tagend

file1.txt:

# This is the file nr.1
tagstart 123 tagend
tagstart abc tagend
kill tagstart def tagend kenny

file2.txt:

# This is the file nr.2
tagstart 123 tagend
tagstart abc tagend
kill tagstart xxx tagend kenny

此命令将提取标签及其包含的字符串:

 cat file1.txt file2.txt | grep -o -E "tagstart(.*?)tagend" > output.txt

output.txt:

tagstart 123 tagend
tagstart abc tagend
tagstart def tagend
tagstart 123 tagend
tagstart abc tagend
tagstart xxx tagend

额外的cookie,供您娱乐:

此命令将执行类似的操作,但将仅显示排序的唯一记录,以及它们的出现(出于统计目的):

 sort file1.txt file2.txt | grep -o -E "tagstart(.*?)tagend" | uniq -c | \
 awk '{print $2" "$3" "$4" : "$1}' > output.txt

output.txt:

tagstart 123 tagend : 2
tagstart abc tagend : 2
tagstart def tagend : 1
tagstart xxx tagend : 1
grep 'tagstart random string tagend' file1.txt file2.txt > out.txt

正则表达式很少是解析xml的好方法。 您是否考虑过诸如tagstart one tagstart two tagend one tagend

tagstart one tagstart two tagend one tagend
要么
tagstart one tagstart two tagend
要么
tagstart two tagend
要么
tagstart two tagend one tagend
都符合您的条件。 您想要哪一个?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM