Відповіді:
"Видалити всі порожні пробіли" може означати одну з різних речей:
0x20
.\t
"\n
" та іншіЯкщо sed
це не вимога з якоїсь прихованої причини, краще скористайтеся правильним інструментом для роботи.
Команда tr
має головне використання при перекладі (звідси назва "tr") списку символів до списку інших символів. Як кутовий випадок, він може перекласти у порожній список символів; Параметр -d
( --delete
) видалить символи, які відображаються у списку.
У списку символів можна використовувати класи символів у [:...:]
синтаксисі.
tr -d ' ' < input.txt > no-spaces.txt
tr -d '[:blank:]' < input.txt > no-spaces.txt
tr -d '[:space:]' < input.txt > no-spaces.txt
sed
З sed [:...:]
синтаксис для класів символів потрібно поєднувати з синтаксисом наборів символів у регулярних виразах [...]
, що призводить до дещо заплутаності [[:...:]]
:
sed 's/ //g' input.txt > no-spaces.txt
sed 's/[[:blank:]]//g' input.txt > no-spaces.txt
sed 's/[[:space:]]//g' input.txt > no-spaces.txt
tr -d ' ' < input.txt > no-spaces.txt
.
tr
. (Чи бачите ви його деінде?)
Ви можете використовувати це для видалення всіх пробілів у file
:
sed -i "s/ //g" file
man sed | sed "s/ //g"
/
різними символами, наприклад:sed "ss ssg"