使用Unix shell脚本删除空白

使用Unix shell脚本删除空白,shell,unix,Shell,Unix,我想写一个shell脚本。它将接收一个.txt文件并输出一个.csv文件 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 在伪代码中,它将是:

我想写一个shell脚本。它将接收一个.txt文件并输出一个.csv文件

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。直到不再做任何改变(或者说仅仅做10次)

  • 将“”替换为“,”


  • 有什么想法吗?

    您可以一步完成:

    sed 's/  */,/g'
    

    它不是shell,而是一个perl单行程序:

    perl -pi -e 's| +|,|g' filename.txt
    
    tr-s'',
    为什么不用“+”而不是“*”@MrTux它就是不起作用:
    +
    是所谓的“扩展”正则表达式的一部分。需要编写
    sed-r的/+/,/'
    才能工作。
    tr -s ' ' , < input-file.txt