変数があります。
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