正規表現 awk からコンマを除くすべての句読点を削除する正規表現

正規表現 awk からコンマを除くすべての句読点を削除する正規表現

変数があります。

 local= "[  'service center','New'  ]"

次のawkコードを使用して、角かっこと一重引用符を削除しています。

 local=gensub(/[\[\]']+/, "", "g", local);

予想されるO / Pは次のとおりです。

local ="  service center,New  "

私が書いたコードはうまくいきません

答え1

カンマを句読点以外の文字に置き換え、残りの句読点文字を削除してカンマを復元できます。

awk -v  local="[  'service center','New'  ]" '
  BEGIN {
    gsub(/,/, SUBSEP, local)
    gsub(/[[:punct:]]/, "", local)
    gsub(SUBSEP, ",", local)
    printf("local=\"%s\"\n", local)
  }'
local="  service center,New  "

ここでは、次の組み込みSUBSEP変数を使用しています。GNU awk マニュアルしたがって:

デフォルトは、awkプログラムまたはほとんどの入力データに表示される可能性のない印刷されない文字を含むSUBSEP文字列です。"\034"

答え2

以下のコマンドを見つけます。正常に動作します。

cat filename
local= "[  'service center','New'  ]"

sed "s/[^a-zA-Z,= \" ]//g"  filename
output: local= "  service center,New  "


Command:  sed "s/[^a-zA-Z,= \" ]//g" filename

関連情報