簡體   English   中英

使用bash從單列中刪除空格

[英]Remove spaces from a single column using bash

為我提供了一個CSV文件,該文件在單列中使用空格表示千位分隔符(例如11000,而不是11,000或11000)。 其他列中有有用的空間,因此我只需要修復這一列。

我的資料:

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,但是我無法使其正常工作。

臟又快:

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

一種可能是:

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

這會在空格的兩邊查找兩位數,並僅保留兩位數。 對於顯示的數據,它將正常工作。 如果可能需要處理11 234 567.89則可以添加尾隨g

如果您可能有其他的列在數字之間有空格,或者不是第一個這樣的列,則可以在awk使用類似的技術/正則表達式,並在相關字段上使用gsub()

只是用bash

$ 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM