私の入力は次のとおりです
Name, Country, City
Jason, US, Memphis, "1,000"
David, US, Little Rock, "8,765,453"
"Karam, Sage", US, Nazareth, "4,678"
"David, simon", US, Chicago, "1,234"
私は出力が次のようになります:
Name, Country, City
Jason, US, Memphis, "1000"
David, US, Little Rock, "8765453"
"Karam, Sage", US, Nazareth, "4678"
"David, simon", US, Chicago, "1234"
最初の列ではなく4番目の列からのみカンマを削除したいと思います。
答え1
またはパールを使用してください:
perl -pe 's/(\d),(\d)/$1$2/g' infile.txt
数字(\ d)で囲まれたすべてのカンマを削除します。
何千もの区切り文字を削除するのが作業の中心だと思います。カンマのある列ではありません。
答え2
これを行う1つの方法は、4番目のコミットが最後のコミットであると仮定することです。AWK
awk -F\" '{gsub(",","",$(NF-1))}1' OFS=\" infile.txt
出力は次のとおりです
Name, Country, City
Jason, US, Memphis, "1000"
David, US, Little Rock, "8765453"
"Karam, Sage", US, Nazareth, "4678"
"David, simon", US, Chicago, "1234"
答え3
そしてsed
:
sed -e ':a' -e 's/,\([^"]*"$\)/\1/;ta' infile.txt
2番目の二重引用符の後に削除するコンマがある場合は、繰り返すことができます。
答え4
CSVデータを解析するには、CSVパーサーを使用することをお勧めします。 Rubyには1つあります。
ruby -rcsv -e '
data = CSV.read(ARGV.shift, :col_sep => ", ")
out = CSV.new($stdout, :col_sep => ", ")
data.each {|row| row[-1].delete! ","; out << row}
' file.csv
Name, Country, City
Jason, US, Memphis, 1000
David, US, "Little Rock", 8765453
"Karam, Sage", US, Nazareth, 4678
"David, simon", US, Chicago, 1234