[英]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.