CSV形式のファイルから二重引用符を1つずつ削除し、その中のカンマを空白に置き換えて、フィールド全体を1つに見えるようにするコマンドを探しています。
例:csvの1列の下に""Wembley,London""
表示されます。Wembley London
また、「Wembley、London」の救いはWembley Londonである。スクリプトは、フィールドの位置に関係なくファイルを読み込みます。
次のコマンドを試しましたが、うまくいきませんでした。
sed 's/\"//g' $fname > $Target/sample_UPS1.csv
sed 's/\,/ /g' $Target/sample_UPS1.csv > $Target/sample_UPS1.csv
awk -F'""' -v OFS='' '{ for (i=2; i<=NF; i+=2) gsub(",", " ", $i) } 1' $fname | sed 's/\"//g' > $Target/sample_UPS.txt ##For removal of two double quotes and substitution of comma with a space##
awk -F'"' -v OFS='' '{ for (i=2; i<=NF; i+=2) gsub(",", " ", $i) } 1' $Target/sample_UPS.txt | sed 's/\"//g' > $Target/sample_UPS1.txt ##For removal of double quotes and substitution of comma with a space##
どちらの場合も、Sample_ups1は私の出力ファイルです。
ベストアンサー1
有効なCSVがある場合は、適切なCSVパーサーを使用する必要があります。 Rubyは使いやすいです:if
cat file.csv
"""Wembley,London""",a,"b","c, ""d e"", ""f,g"",h"
それから
ruby -e '
require "csv"
data = CSV.read ARGV.shift
data.each {|row|
row.each {|field| field.delete! "\""; field.tr! ",", " "}
puts CSV.generate_line row
}
' file.csv
Wembley London,a,b,c d e f g h
CSVフィールドには引用符が含まれています。二重見積もりをリクエスト。お持ちの場合
""Wembley,London"","other stuff",...
その場合、CSVの形式が正しくありません。