Shell-Script

使用’find’然後在每行搜尋bash腳本中的兩個值

  • October 10, 2018

大家好,我有大量文件我用“查找”遞歸搜尋然後一旦找到所有這些文件類型,我想刪除每行上與此字元串不匹配的所有記錄,按以下順序:

INPUT||||SELECT 'BLABLA' as SOR'
  • INPUT||||SELECT (不區分大小寫)開始一行 - 單引號(BLABLA)之間的內容是隨機的,所以我需要一個萬用字元

  • ‘as SOR’ 不區分大小寫

來自所搜尋的數據文件之一的範例:

1) INPUT||||select 'LLC'    
2) INPUT||||select 'LLC' as SOR, b.cust_id_num, b.cust_federal_id_num, ...
3) INPUT||||select distinct 'LLC' as SOR, b.cust_id_num, b.cust_federal_id_num, ...
4) INPUT||||select 'BBD' as sor, b.cust_id_num, b.cust_federal_id_num, ...
5) INPUT||||SELECT 'GOD' $VAL, b.cust_ID_num, a, cust live num...
6-+++)... 

成功的搜尋應導致以下結果:

-1 行將被忽略,不重複 ‘as sor’

-2 行將被擷取,因為它符合所有條件

-3 行將被忽略,因為 ‘distinct’ 出現在 ‘select’ 和 ’ sor’

-4th line 將被擷取,因為它符合所有標準

-5th line 將被忽略,不迭代 ‘as sor’

我嘗試了很多沒有運氣的事情:

find . -type f -iname "*.dat" -exec sh -c awk '/INPUT||||select/ && /'as SOR'/' "{}" \; > FILE.log
find . -type f -iname "*.dat" -exec grep 'INPUT_SELECT\|as sor' {} \; >  FILE .log

我真的認為這樣的事情會在我的腳本中起作用,但沒有這樣的運氣!

grep -i "INPUT\||||select \<'...'\> as sor" ...

我已經嘗試了各種轉義和引用以使事情正確,但我仍然返回不符合訂單mentioend 標準的記錄。提前致謝!

這個怎麼樣?

grep -i -e "INPUT||||select '.*' as SOR" test.in

引用自:https://unix.stackexchange.com/questions/472806