引用符を除いて、テキストファイルのコンマを縦線で置き換えます。

引用符を除いて、テキストファイルのコンマを縦線で置き換えます。

txtファイルがあります。

 ,"Hi, I am Tom",,"16"
"I3","Hi, I am Jerry","Mouse","17"

ここでファイルは UTF-8 です。私がしたいのは、引用符 ""内の内容を除いてコンマを|に置き換えることです。したがって、新しく作成されたtxtファイルは次のようになります。

|"Hi, I am Tom"||"16"
"I3"|"Hi, I am Jerry"|"Mouse"|"17"

私はsedまたはawkスクリプトについてはよくわかりませんが、これを行うために使用できると聞きました。誰でもそれがどのように完了したのか教えてもらえますか?

ベストアンサー1

Edのコメントに従い、カンマの周りのスペースを編集すると

$ cat text.csv
,"Hi, I am Tom",,"16"
"I3","Hi, I am Jerry","Mouse","17"

$ csvformat -D '|' text.csv
|Hi, I am Tom||16
I3|Hi, I am Jerry|Mouse|17

csvformatcsvkitの一部です。 https://csvkit.readthedocs.io/en/1.0.2/scripts/csvformat.html


CSVモジュールには、Rubyなど、ユーザーがインストールした可能性がある他の言語が付属しています。

$ ruby -rcsv -e 'CSV.foreach(ARGV.shift) {|row| puts CSV.generate_line(row, col_sep: "|")}' text.csv
|Hi, I am Tom||16
I3|Hi, I am Jerry|Mouse|17

おすすめ記事