Как заменить пробелы на запятые в консоли Linux (sed, tr, awk)

Раздел: Серверы и сайты
Написано: 5.10.2019
Автор: Antonio

Обрабатывать логи и другие текстовые данные удобно скриптами прямо в консоли Linux. С sed, awk и регулярными выражениями можно почти творить чудеса :-) Частая задача — заменить пробелы запятыми, например чтобы сделать из строки CSV.

Как заменить пробелы на запятые в консоли Linux (sed, tr, awk)

Коротко: sed 's/ /,/g' файл заменит все пробелы на запятые. Без g заменится только первый пробел в каждой строке.

Заменить первый пробел

sed 's/\s/,/' test.txt
red,blue green black

\s — любой пробельный символ (пробел или табуляция).

Заменить все пробелы

Добавляем флаг g (global):

sed 's/\s/,/g' test.txt
red,blue,green,black

Несколько пробелов подряд — одной запятой

Если между словами бывает по два-три пробела или табуляции, замените всю группу сразу:

sed -E 's/\s+/,/g' test.txt

Другие способы

  • tr ' ' ',' < test.txt — самый простой способ заменить каждый пробел на запятую;
  • awk -v OFS=',' '{$1=$1; print}' test.txt — заменит любые группы пробелов на запятую и уберёт пробелы в начале и конце строки;
  • sed -i 's/ /,/g' test.txt — изменит сам файл (без -i результат только выводится на экран). Перед -i лучше сделать копию файла.

Вот так просто!

Ещё похожие заметки:

Написать

Копирование информации с сайта возможно только с указанием прямой ссылки - https://nemcd.com