"찾기"를 사용하여 bash 스크립트의 각 줄에서 두 개의 값을 검색하세요.

"찾기"를 사용하여 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-+++)... 

성공적인 검색은 다음 결과를 생성해야 합니다. -
첫 번째 행은 무시되고 'as sor'의 반복은 발생하지 않습니다. -
두 번째 행은 모든 조건을 충족하므로 캡처됩니다
. - 'distinct'가 나타나므로 세 번째 행은 무시됩니다. 'select' 및 'between sor'에서 -
4번째 줄은 모든 조건을 만족하므로 캡처됩니다
. - 5번째 줄은 무시되고 '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" ...

문제를 해결하기 위해 다양한 탈출 및 인용을 시도했지만 여전히 주문 언급에 해당하지 않는 기록이 반환됩니다. 미리 감사드립니다!

답변1

이건 어때?

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

관련 정보