次の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