awkを使用して二重引用符を置き換える

awkを使用して二重引用符を置き換える

各フィールドがコンマで区切られた以下のファイルがあります。 5番目のフィールド("txt4 "(tst)"")を変更し、"2つの外部引用符を除いて、そのフィールドのすべての項目をに置き換える必要がありますchr(34)。つまり、最後のフィールドはに変換する必要があります"txt4 chr(34)(tst)chr(34)"。実際のデータには、ここに示されているフィールドよりも多くのフィールドを含めることができるため、ソリューション内の特定のフィールドをリストすることは非現実的です。

以下の出力を取得するには、awkを使用する必要があります。

サンプルcsvファイル:

"this is txt1","this is txt2",3,"this txt3","txt4 "(tst)"" 

希望の出力:

"this is txt1","this is txt2",3,"this txt3","txt4 chr(34)(tst)chr(34)"

ベストアンサー1

データのソースまたは予想される形式については実際にはあまり話しません。練習を「replace with "(」または「replace with」に再構成できる場合は、次の2つのコマンドを使用できます。chr(34)("))chr(34)"(tst)"chr(34)(tst)chr(23)sed

$ sed -e 's/"(/chr(34)(/' -e 's/)"/)chr(34)/' file
"this is txt1","this is txt2",3,"this txt3","txt4 chr(34)(tst)chr(34)"
$ sed 's/"\((tst)\)"/chr(34)\1chr(34)/' file
"this is txt1","this is txt2",3,"this txt3","txt4 chr(34)(tst)chr(34)"

最後のフィールドの形式が正しくないため、テキストをCSVレコードに解析できません。このフィールドの正しく引用されたバージョンは次のとおりです"txt4 ""(tst)"""

おすすめ記事