2014-10-04 68 views
0

我想編寫一個shell腳本。它將採用.txt文件並輸出.csv文件。使用Unix shell腳本刪除空白空間

.txt文件是文本的二維數組。但每個條目之間的空間數量未知。

因此,例如,輸入文件可能看起來像:

Name Subject Grade 
Fred English  A 
James French B 
Mark  Maths  D 

而且我希望它看起來像

Name,Subject,Grade 
Fred,English,A 
James,French,B 
Mark,Maths,D 

僞代碼將是:

  1. 搜索爲包含兩個空格的字符串替換爲單個空格

  2. 重複1至正在作出不再變化(或僅10倍,說)

  3. 替換 「」 用 「」

任何想法?

回答

2

你能做到一步到位:

sed 's/ */,/g' 
+1

爲什麼不'+',而不是'*'? – MrTux 2014-10-04 17:19:38

+1

Just code golfing ...'-r' /'-E'需要更多空間:) – 2014-10-04 17:21:09

+0

@MrTux它不起作用:'+'是所謂的「擴展」正則表達式的一部分。需要編寫'sed -r'/ + /,/''才能工作。 – 2014-10-04 17:21:59

0

這不是外殼,而是一個Perl的一行:

perl -pi -e 's| +|,|g' filename.txt 
0
tr -s ' ' , < input-file.txt