2014-10-04 2 views
0

Я хотел бы написать сценарий оболочки. Это займет файл .txt и выведет файл CSV.Удалить пустое пространство с помощью сценария оболочки Unix

. 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

+1

Просто код игры в гольф ... '-r' /' -E' занимает больше места :) –

+0

@MrTux Он просто не работает: '+' является частью так называемого расширенного регулярного выражения. Требуется написать 'sed -r '/ + /, /'' для работы. –

0

Это не оболочка, а Perl один вкладыш:

perl -pi -e 's| +|,|g' filename.txt 
Смежные вопросы