awk + ​​gsub +さまざまな文字の使い方

awk + ​​gsub +さまざまな文字の使い方

次のawkコマンドの目的は、CSVファイルと区切り文字の間の単一の単語からのみスペースと不要な引用符を削除することです。

awk 'gsub(/("[ ]+|[ ]+")/,"\""){$0=gensub(/"([[:alnum:]]+)"/,"\\1","g")}1' file.csv

例:(以前)

1,"1.0348    54 35.5",""45356",""4"""""35,"578 "

例: (以降)

1,"1.0348    54 35.5","45356,"4""""35,578

問題は、awk文字が英数字でないと処理できないことです。

はい

1,"  jde7@&^%  "," &^!@  ",)(*&^," (*^%%^&*( "

私の目標は、英数字ではなく、すべての種類の文字と英数字を処理することです。

〜のように

(  A-Z , !@#$%^&&**( , 1-9 , etc )

交換する必要があると思います。[[:番号:]]別の構文を使用します。

awkすべての種類の文字をサポートするには、構文で何を変更する必要がありますか?

ベストアンサー1

文字[[:alnum:]]クラスはアルファベットと数字を表し、次のものを使用できます。

[^[:alnum:]] 英数字でない場合、目標は次のとおりです。

私の目標は、英数字ではなく、すべての種類の文字と英数字を処理することです。

この表現を使用できます。[[:alnum:]] | [^[:alnum:]]

したがって、awkコマンドは次のようになります。

awk 'gsub(/("[ ]+|[ ]+")/,"\""){$0=gensub(/"(([[:alnum:]]|[^[:alnum:]])+)"/,"\\1","g")}1' file.csv

おすすめ記事