Ответы:
«Удалить все пробелы» может означать одну из следующих вещей:
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"