Perl을 사용하지 않고 특정 문자 앞의 단어 검색

Perl을 사용하지 않고 특정 문자 앞의 단어 검색

열 이름을 추출하려는 SQL 쿼리의 where 절에 대한 텍스트 형식이 있습니다. 이러한 절에는 다음과 같은 조건이 포함될 수 있습니다.col_1 = '스프루스' 및 col_2('아르헨티나', '카메룬').

내 첫 번째 질문은 ksh로 추출이 가능합니까?열_1그리고열_2텍스트의 값(즉, 앞의 모든 단어in (또는 등호). 나는 알고있다다른 것이라면텍스트가 특정 패턴과 일치하면 실행 흐름을 제어할 수 있지만 텍스트를 특정 패턴과 일치시키는 단어를 실제로 검색하는 방법을 모르겠습니다.

고쳐 쓰다:

예를 들어. 입력이 이면 을 tree_type = 'Spruce' and country in ('Russia', 'Zambia')얻고 싶습니다 tree_type country.

입력이 employee_state in ('Colorado', 'Wyoming', 'Louisiana') and dept_nr in (13, 732, 91) and case_code = 82517내가 얻고 싶은 것이라면 employee_state dept_nr case_code.

나는 그것을 시도했고 sed 's/\S\+ \((= \|in (\)/\1/g', 유지하고 싶은 단어를 제거하고 제거하고 싶은 다른 모든 것을 유지했습니다. 나는 또한 및를 sed 's/\(\S\+ \)\(= \|in (\)/\1/g'제거 하고 다른 모든 것을 유지하는 이것을 시도했습니다.=in (

업데이트 2:

나는 Costas의 첫 번째 제안을 sed 's/\S\+ \(= \|in (\)/\1/g'원본에서 제거한 두 번째 변수에 입력하여 원하는 것을 얻었습니다.

$ A="employee_state in ('Colorado', 'Wyoming', 'Louisiana') and dept_nr in (13, 732, 91) and case_code = 82517"; B=$(echo $A | sed 's/\S\+ \(= \|in (\)/\1/g'); for b in $B; do A=${A[@]/$b}; done; echo $A

employee_state dept_nr case_code

코스타스님, 도와주셔서 정말 감사드립니다.

답변1

출력을 파이핑해 보세요

sed 's/\S\+ \(= \|in (\)/\1/g'

관련 정보