Sed для удаления пробелов
Кто-нибудь знает, как использовать Sed, чтобы удалить все пробелы в текстовом файле? Я пытался использовать команду удаления "d", чтобы сделать это, но не могу понять это
2 ответа
Что за "космос"?
"Удалить все пробелы" может означать одну из следующих вещей:
- удалить все вхождения пробела, код
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 '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
Вы можете использовать это, чтобы удалить все пробелы в file
:
sed -i "s/ //g" file
Возможно , это слишком поздно, но sed принимает на вход регулярное выражение. '\s' - это выражение всех пробелов. Так
sed s/'\s'//g
должен делать свою работу. ура