列名を抽出する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'