2017-05-26 140 views
0

我在做一個程序,可以找到匹配用戶給出的兩個模式(日期和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' . 

回答

1

不能使用單引號的字符串變量。嘗試了這一點:

#!/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

它的工作原理!謝謝 –

相關問題