見つけてawkに置き換える

見つけてawkに置き換える

|パイプ区切り文字()を使用して列4をgrepし、その中のすべての二重引用符を置き換えてから、文字列を二重引用符で囲みます。

サンプルファイル:

col1|col2|col3|col4|col5|col6|col7|col8|col9
value1|value2|value3|"|||||value"4|value5|value6|"||value"7|value8|value9

問題は、4列にユーザーが何でも書くことができるということです。パイプまで書き込むことができます。これは区切り文字であり、これはプロセスを中断します。

たとえば、列 4 は次のようになります。

"|||||value"4

それでは、列4に進み、二重引用符をすべて置き換えてから、二重引用符で囲んでプロセスを機能させるコマンドを作成しようとしています。

列4の出力は次のとおりです。

"|||||value4"

同様に、列7についても同じことを行い、列7に必要な出力は次のとおりです。

"||value7"

最終出力は次のようになります。

col1|col2|col3|col4|col5|col6|col7|col8|col9
value1|value2|value3|"|||||value4"|value5|value6|"||value7"|value8|value9

提案してください。

ベストアンサー1

使用csvkit:

$ csvformat -d '|' -D '|' file.csv
col1|col2|col3|col4|col5
test|test_f|21/03/2017|"|||||USER RIGHTa anything here"|123

-dとフラグは、-D入力と出力にそれぞれ使用される区切り文字を定義します。

おすすめ記事