Измените два или более пробелов на одну точку с запятой - PullRequest
5 голосов
/ 26 июля 2010

Я борюсь с форматированием запроса db2. Я хотел бы заменить 2 или более пробелов в строке точкой с запятой. Я знаю, как это сделать со всеми пробелами, вопрос заключается в том, как изменить только 2 или более пробелов: P

Вот пример, я хотел бы изменить это:

john doe    1900-01-01    california

до

john doe;1900-01-01;california

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

Буду очень признателен за вашу помощь! Заранее спасибо!

Ответы [ 3 ]

6 голосов
/ 26 июля 2010
$ sed 's/   */;/g' 
john doe   1900-01-01  california 
john doe;1900-01-01;california 
one space  two  spaces   three    spaces
one space;two;spaces;three;spaces
3 голосов
/ 26 июля 2010

Попробуйте использовать

sed -i 's/   */\;/g' your-file

Это заменит каждые 2 или более пробелов на ; в передаваемом вами файле.

0 голосов
/ 26 июля 2010

Лучший способ - запросить таблицы базы данных с правильным разделителем (то есть ";"). Посмотрим, сможешь ли ты сделать это таким образом. В противном случае

$ echo "john doe 1900-01-01 california" | sed 's/ /;/2g'
john doe;1900-01-01;california

Это сломается, если имя содержит 3 или более слов.

...