Sed для удаления пробелов
Кто-нибудь знает, как использовать Sed, чтобы удалить все пробелы в текстовом файле? Я пытался использовать команду удаления "d", чтобы сделать это, но не могу понять это
2 ответа
Что за "космос"?
"Удалить все пробелы" может означать одну из следующих вещей:
- удалить все вхождения пробела, код
0x20, - удалить все горизонтальное пространство, включая символ горизонтальной табуляции, "
\t" - удалить все пробелы, включая перевод строки "
\n" и другие
Правильный инструмент для работы
Если sed это не требование по какой-то скрытой причине, лучше использовать правильный инструмент для работы.
Команда tr в основном используется для перевода (отсюда и названия "tr") списка символов в список других символов. В качестве углового случая его можно перевести на пустой список символов; Опция -d (--delete) удалит символы, которые появятся в списке.
Список символов может использовать классы символов в [:...:] синтаксис.
tr -d ' ' < input.txt > no-spaces.txttr -d '[:blank:]' < input.txt > no-spaces.txttr -d '[:space:]' < input.txt > no-spaces.txt
Настаивая на sed
С седом [:...:] синтаксис для классов символов должен быть объединен с синтаксисом для наборов символов в регулярных выражениях, [...]в результате чего несколько запутанным [[:...:]]:
sed 's/ //g' input.txt > no-spaces.txtsed 's/[[:blank:]]//g' input.txt > no-spaces.txtsed 's/[[:space:]]//g' input.txt > no-spaces.txt
Вы можете использовать это, чтобы удалить все пробелы в file:
sed -i "s/ //g" file
Возможно , это слишком поздно, но sed принимает на вход регулярное выражение. '\s' - это выражение всех пробелов. Так
sed s/'\s'//gдолжен делать свою работу. ура