テキスト処理にawkを使用する[閉じる]

テキスト処理にawkを使用する[閉じる]

次のテキストがあります。

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}}とを使用してテーブルをクエリした後に得られた単一の値でクエリで置き換えられます。val1val2

ベストアンサー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

おすすめ記事