2014-10-04 79 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