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'元のものから削除した2番目の変数に入力して欲しいものを得ました。

$ 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'

関連情報