Shell-Script
使用’find’然後在每行搜尋bash腳本中的兩個值
大家好,我有大量文件我用“查找”遞歸搜尋然後一旦找到所有這些文件類型,我想刪除每行上與此字元串不匹配的所有記錄,按以下順序:
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