簡體   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