1

私はCSVファイルを提供されました。これは、単一の列でスペースを使用して千の区切り記号を示します(たとえば、11,000または11000の代わりに11 000)。他の列には有用なスペースがあるため、この 1 つの列だけを修正する必要があります。

私のデータ:

Date,Source,Amount
1/1/2013,Ben's Chili Bowl,11 000.90

私は取得する必要があります:

Date,Source,Amount
1/1/2013,Ben's Chili Bowl,11000.90

awk、sed、cut を試してみましたが、うまくいきません。

4

3 に答える 3

7

ダーティでクイック:

awk -F, -v OFS="," '{gsub(/ /,"",$NF)}1'

例:

kent$  echo "Date,Source,Amount
1/1/2013,Ben's Chili Bowl,11 000.90"|awk -F, -v OFS="," '{gsub(/ /,"",$NF)}1'
Date,Source,Amount
1/1/2013,Ben's Chili Bowl,11000.90
于 2013-05-10T17:06:17.577 に答える
0

1つの可能性は次のとおりです。

sed 's/\([0-9]\) \([0-9]\)/\1\2/'

これは、空白の両側の 2 桁を検索し、2 桁だけを保持します。表示されているデータの場合、問題なく動作します。gに対処する必要がある場合は、末尾を追加できます11 234 567.89

数字の間にスペースがある他の列がある場合、またはそのような最初の列ではない場合は、関連するフィールド awkで同様の手法/正規表現を使用できます。gsub()

于 2013-05-10T17:07:22.860 に答える
0

バッシュだけで

$ echo "Date,Source,Amount
1/1/2013,Ben's Chili Bowl,11 000.90" |
while IFS=, read -r date source amount; do
    echo "$date,$source,${amount// /}"
done
Date,Source,Amount
1/1/2013,Ben's Chili Bowl,11000.90
于 2013-05-10T21:03:14.613 に答える