2016-03-02 2 views
0

У меня есть файл, который выглядит следующим образом:Использование СЭД, чтобы удалить ведущие и завершающие пробелы

2 1 word 
    78 3 other words 
    2 some other words here 
    54 bla bla 

я хотел бы, чтобы удалить пробельные и поставить запятую между значениями и остальными. вывод должен выглядеть

2,1 word 
78,3 other words 
2,some other words here 
54,bla bla 

командной

sed -e 's/\s*([0-9])+\s.+/&/' 

ничего

ответ

1

Это должно сделать трюк?

sed -Ee 's/^[[:space:]]+([0-9]+)[[:space:]]+/\1,/' bob 
2,1 word 
78,3 other words 
2,some other words here 
54,bla bla 
+0

нелегальный вариант г (под OSX) – Bob

+1

Ну, очистить вас теги, а затем :) .. вы отметили его как Linux Bash или установите достойный sed с использованием homebrew;} – tink

+1

++; просто используйте '-E' вместо' -r', и он будет работать на OSX (кстати, GNU 'sed' поддерживает' -E', даже если справочная страница не говорит об этом). – mklement0

0

не изменить Вы можете использовать это СЭД, чтобы удалить все начальные и конечные пробелы в каждой строке и вставить запятую после первого номер:

sed -E 's/^[[:blank:]]+|[[:blank:]]+$//g; s/([[:digit:]]+)[[:blank:]]*/\1,/' file 

2,1 word 
78,3 other words 
2,some other words here 
54,bla bla 

Однако, если у вас нет конечных пробелов в e ACH линия затем использовать:

sed -E 's/^[[:blank:]]*([[:digit:]]+)[[:blank:]]*/\1,/' file 

[[:blank:]] соответствует пробелу или вкладку.

-1

Try:

sed -e 's/(\d) (\d)(*)/\1,\2\3' infile.txt 
+2

sed: 1: "s/(\ d) (\ d) (*)/\ 1, \ 2 \ 3 ": \ 1 не определено в RE – Bob

+2

@Arif: Вы на самом деле пытались это сделать? :) – tink

0

Это будет работать с любой POSIX СЭД:

$ sed 's/^[[:space:]]*//; s/[[:space:]]*$//; s/[[:space:]]/,/' file 
2,1 word 
78,3 other words 
2,some other words here 
54,bla bla 
Смежные вопросы