열 이름을 추출하려는 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'