[英]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.