查找匹配位于不同行的模式的文件

问题描述:

我在做一个程序,可以找到匹配用户给出的两个模式(日期和ID)的文件,两个模式都位于每个文件内的不同行中。这些文件位于不同的.zip子文件夹中。我的代码不起作用,我正在尝试使用PCRE DOTALL。查找匹配位于不同行的模式的文件

文件示例:

TextTextTextTextText 
    TextTextText: [20-MAY-2017] 
    TextTextTextTextText 
    TextTextTextTextText 
    TextTextTextTextText 
    TextTextText: [123456] 

代码我使用:

 echo "Set a specific Date [ DD-MM-YYYY ]: " 
     read -r Date 
     echo -e "Introduce ID: " 
     read -r ID 
     #Search pattern 
     grep -Pzo '(?s)$Date.*\n.*$ID' . 

不能使用单引号的字符串变量。尝试了这一点:

#!/bin/bash 
read -r -p "Set a specific Date [ DD-MMM-YYYY ]: " searchdate 
read -r -p "Introduce ID: " searchid 
grep -Pzo "(?s)\[$searchdate\].*\[$searchid\]" sample.txt 

前提是你的输入没有/字符,你也可以使用简单的awk命令:

awk "/$searchdate/,/$searchid/" sample.txt 
+0

它的工作原理!谢谢 –