次のテキストがあります。
select {{112,department}},{{112,client}},{{112,place}} from table where id=1 and {{112,cgid}} and {{113,evid}}
ファイルに書き込む必要があります。
{{112,department}}
{{112,client}}
{{112,place}}
{{112,cgid}}
{{113,evid}}
各項目は独自の行にあります。
試してみましたが、awk -F '[{}]' '{print $2}'
最初の項目のみを印刷して{}
サフィックスとプレフィックスを追加するときに{}
構文エラーがありますか?
追加要件
{{va1,val2}}
とを使用してテーブルをクエリした後に得られた単一の値でクエリで置き換えられます。val1
val2
ベストアンサー1
または以下を使用してくださいsed
。
sed 's/select //;s/ from[^}]* //;s/},{/}\n{/g;s/}}{{/}}\n{{/g;s/\s*and\s*/\n/g'
はい
$ echo 'select {{112,department}},{{112,client}},{{112,place}} from table where id=1 and {{112,cgid}} and {{113,evid}' | \
sed 's/select //;s/ from[^{]*//;s/},{/}\n{/g;s/}}{{/}}\n{{/g;s/\s*and\s*/\n/g'
{{112,department}}
{{112,client}}
{{112,place}}
{{112,cgid}}
{{113,evid}
仕組み:
s/select //;
select
- 最初から削除s/ from[^{]*//;
-from.*
上から下に最初の項目を削除します。{
s/},{/}\n{/g;
- すべて},{
に変換}\n{
s/}}{{/}}\n{{/g;
- すべて}}{{
に変換}}\n{{
s/\s*and\s*/\n/g'
- すべてand
に変換\n